创建过滤器

创建一个类,然后实现GateFilter接口即可

public class DemoGateFilter implements GateFilter {

    // 转发之前执行这个方法
    @Override
    public Object doFilter(HttpMarsRequest request, HttpMarsResponse response) {
        // 如果正常通过,就返回SUCCESS,否则直接返回提示信息,前端可以收到这里返回的提示信息
        return SUCCESS;
    }

    // 转发后,拿到了微服务接口返回的数据,但是在响应给客户端之前,执行这个方法
    @Override
    public Object doResult(HttpMarsRequest request, HttpMarsResponse response, Object resultData, InputStream resultStream) {
        // 如果正常通过,就返回SUCCESS,否则直接返回提示信息,前端可以收到这里返回的提示信息
        return SUCCESS;
    }

}

doResult方法参数解释:

一、 resultData

  • 如果此次请求,微服务返回的是一个JSON,而不是文件流,那么这个参数里面的值 就是微服务返回的那个JSON, 否则为null;解析方式如下:
  • 转成JSON字符串【String jsonStr = JSON.toJSONString(resultData);】,然后根据实际情况,将这个字符串转成JSONObject或者JSONArray

二、 resultStream

  • 如果此次请求,微服务返回的是一个文件流【文件下载,excel导出等场景】,那么这个参数里就是 这个文件流。
  • 如果此次请求,微服务返回的是一个JSON,那么这个参数里就是 微服务接口返回的那个对象 被序列化后的二进制流,可以通过反序列化的方式,获取到那个对象。

配置过滤器

在配置类里面重写getGateFilter方法,然后将自定义过滤器添加进去

public class GateWayConfig extends MarsGateWayConfig {

    @Override
    public List<GateFilter> getGateFilter() {
        List<GateFilter> list = new ArrayList();
        list.add(new DemoGateFilter());
        return list;
    }
}

results matching ""

    No results matching ""