有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java定制Zuul异常

我在Zuul有一个场景,URL路由的服务也可能会关闭。因此,在JSON主体响应中,会抛出带有500个HTTP状态和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();
}

共 (0) 个答案