我正在尝试为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;
}
欣赏任何建议?
答案 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
希望这会对你有所帮助。