自定义 Zuul 异常
2022-09-01 20:07:55
						我在Zuul中有一个场景,其中URL也被路由的服务可能已关闭。因此,在 JSON 正文响应中,响应正文会抛出 500 HTTP Status 和 ZuulException。
{
  "timestamp": 1459973637928,
  "status": 500,
  "error": "Internal Server Error",
  "exception": "com.netflix.zuul.exception.ZuulException",
  "message": "Forwarding error"
}
我想做的就是自定义或删除JSON响应,并可能更改HTTP状态代码。
我试图创建一个具有@ControllerAdvice异常处理程序,但异常没有被处理程序抓取。
更新:
所以我扩展了Zuul过滤器,我可以看到它在执行错误后进入run方法,然后我如何更改响应。以下是我到目前为止所得到的。我在某处读到了关于SendErrorFilter的信息,但是我如何实现它,它有什么作用?
public class CustomFilter extends ZuulFilter {
    @Override
    public String filterType() {
        return "post";
    }
    @Override
    public int filterOrder() {
        return 1;
    }
    @Override
    public boolean shouldFilter() {
        return true;
    }
    @Override
    public Object run() {
        final RequestContext ctx = RequestContext.getCurrentContext();
        final HttpServletResponse response = ctx.getResponse();
        if (HttpStatus.INTERNAL_SERVER_ERROR.value() == ctx.getResponse().getStatus()) {
            try {
                response.sendError(404, "Error Error"); //trying to change the response will need to throw a JSON body.
            } catch (final IOException e) {
                e.printStackTrace();
            } ;
        }
        return null;
    }
已将其添加到具有@EnableZuulProxy
@Bean
public CustomFilter customFilter() {
    return new CustomFilter();
}