zoukankan      html  css  js  c++  java
  • Zuul 修改请求体内容

    @Component
    @Slf4j
    public class ModifyRequestEntityFilter extends ZuulFilter {

    @Override
    public String filterType() {
    return PRE_TYPE;
    }

    @Override
    public int filterOrder() {
    return PRE_DECORATION_FILTER_ORDER + 1;
    }

    @Override
    public boolean shouldFilter() {
    return true;
    }

    @Override
    public Object run() throws ZuulException {
    RequestContext ctx = RequestContext.getCurrentContext();
    try {
    // 编码格式
    String charset = ctx.getRequest().getCharacterEncoding();
    InputStream in = (InputStream) ctx.get("requestEntity");
    if (null == in) {
    in = ctx.getRequest().getInputStream();
    }
    String requestEntityStr = StreamUtils.copyToString(in, Charset.forName(charset));
    requestEntityStr = URLDecoder.decode(requestEntityStr, charset);
    JSONObject requestEntityJson = JSONObject.parseObject(requestEntityStr);
    // 新增参数
    requestEntityJson.put("newParam", "1111111");
    byte[] requestEntityBytes = requestEntityJson.toJSONString().getBytes(charset);
    ctx.setRequest(new HttpServletRequestWrapper(ctx.getRequest()) {
    @Override
    public ServletInputStream getInputStream() throws IOException {
    return new ServletInputStreamWrapper(requestEntityBytes);
    }

    @Override
    public int getContentLength() {
    return requestEntityBytes.length;
    }

    @Override
    public long getContentLengthLong() {
    return requestEntityBytes.length;
    }
    });
    } catch (Exception e) {
    // 用来给后面的 Filter 标识,是否继续执行
    ctx.set(SessionContants.LOGIC_IS_SUCCESS, false);
    // 返回信息
    ctx.setResponseBody(String.format(SessionContants.ERROR_RESPONSE_BODY, "修改请求体出错"));
    // 对该请求禁止路由,禁止访问下游服务
    ctx.setSendZuulResponse(false);
    log.error("【修改请求体 Filter】-出错了:{}", ExceptionUtils.getStackFrames(e));
    }
    return null;
    }

  • 相关阅读:
    jquery 中的 map each has
    jquery的 dom操作
    jquery的 包装集
    JQuery 的了解之 选择器
    JS 中闭包的变量 闭包与this
    IPhone下json的解析 NSJSONSerialization
    IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决办法
    win7系统的用户去掉用户账户控制 提升管理员
    移动开发在路上-- IOS移动开发系列 多线程三
    MVC 入门 自动生成 增删改查所有功能
  • 原文地址:https://www.cnblogs.com/huoqm/p/14479108.html
Copyright © 2011-2022 走看看