在springcloud项目中,网关发生异常时,响应内容并不是我们想要的格式,内容如下:1
2
3
4
5
6
7{
"timestamp": 1481674980376,
"status": 500,
"error": "Internal Server Error",
"exception": "java.lang.RuntimeException",
"message": "Exist some errors..."
}
上面的json则是内置异常过滤器封装的一种格式。我们现在想要修改她,就需要自定义异常过滤器。
- 首先继承抽象类
ZuulFilter,实现filterType(),filterOrder(),shouldFilter(),run()四个抽象方法。前三个方法均使用父方法逻辑。仅修改run()中部分内容,主体逻辑步骤依然参考SendErrorFilter。 - 方法
run()中重新定义异常响应格式,将自定义的响应体,设置到原有的响应中。 - 停用内置的默认异常处理器
SendErrorFilter,在application.yml中设置zuul.SendErrorFilter.error.disable: true。 CustomSendErrorFilter在内置的默认异常处理器失效时生效。设置注解ConditionalOnProperty属性name="zuul.SendErrorFilter.error.disable"。
过滤器详细介绍可参考往期文章:springcloud zuul源码分析:内置过滤器
下面是案例代码:
1 |
|