使用zuul代理, 重写request

背景

zuul的作用类似于nginx, 有时候我们希望在使用zuul代理的同时, 添加一些固定参数

1 添加post参数
public Object run() {
    RequestContext ctx = RequestContext.getCurrentContext();
    HttpServletRequest request = ctx.getRequest();
        try {
        InputStream in = request.getInputStream();
        String body = StreamUtils.copyToString(in, Charset.forName("UTF-8")); 
        if(StringUtils.isNotEmpty(body))
            body += "&";
        body += "clientId=3"; 
        final byte[] reqBodyBytes = body.getBytes(); 
        ctx.setRequest(new HttpServletRequestWrapper(request){
            @Override
            public ServletInputStream getInputStream() throws IOException { 
                return new ServletInputStreamWrapper(reqBodyBytes); 
            } 
            @Override
            public int getContentLength() { 
                return reqBodyBytes.length; 
            } 
            @Override
            public long getContentLengthLong() { 
                return reqBodyBytes.length; 
            } 
        });
          } catch (IOException e) {
        e.printStackTrace();
    } 
return null;
}
2添加get参数
@Override
public Object run() {
    RequestContext ctx = RequestContext.getCurrentContext();
    HttpServletRequest request = ctx.getRequest();
    
    String method = request.getMethod();
    List<String> clientParam = new ArrayList<>();
    clientParam.add("3");
    Map<String, List<String>> qp = HTTPRequestUtils.getInstance().getQueryParams();
    qp.put("clientId", clientParam);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容