创建过滤器
创建一个类,然后实现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;
}
}