为zuul [版本1.1.2]创建立场错误页面

时间:2017-06-15 08:05:50

标签: netflix-zuul

我正在尝试为zuul服务器创建标准错误页面,以便我可以将异常重定向到此页面?

目前,我已经创建了一个zuul过滤器来捕获zuul异常,如下所示:

代码段

 @Override
    public Object run() {
        try {
            RequestContext ctx = RequestContext.getCurrentContext();
            Object e = ctx.get("error.exception");

            if (e != null && e instanceof ZuulException) {
                ZuulException zuulException = (ZuulException)e;
                LOG.error("Zuul failure detected: " + zuulException.getMessage(), zuulException);

                // Remove error code to prevent further error handling in follow up filters
                ctx.remove("error.status_code");

                // Populate context with new response values
                ctx.setResponseBody("Internal Server Error : Please contact Phoenix Admin");
                ctx.getResponse().setContentType("application/json");
                ctx.setResponseStatusCode(500); //Can set any error code as excepted
            }
        }
        catch (Exception ex) {
            LOG.error("Exception filtering in custom error filter", ex);
            ReflectionUtils.rethrowRuntimeException(ex);
        }
        return null;
    }

欣赏任何建议?

1 个答案:

答案 0 :(得分:0)

我将不得不花一些时间看看你如何从我现在旅行的错误页面中读取。但是通过阅读内容来设置响应体可能并不是一个糟糕的选择,绝对可能并不完美。 如果有帮助,请查看以下代码。

还要添加一些您可能正在尝试的代码,但这样做的方式更容易回答并提供帮助。 您需要确保过滤器在预定义过滤器之后运行。

  @Override
        public Object run() {
            RequestContext ctx = RequestContext.getCurrentContext();
            HttpServletRequest request = ctx.getRequest();

        String url = UriComponentsBuilder.fromHttpUrl("http://localhost:8082").path("/outage").build()
                                     .toUriString();
        ctx.set("requestURI", url);
        return null;
    }

查看此信息以获取更多信息: - https://github.com/spring-cloud/spring-cloud-netflix/issues/1754

希望这会对你有所帮助。