在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 |
|