У меня есть сценарий в Zuul, где служба, на которую направлен URL-адрес, тоже может быть недоступна. Таким образом, тело ответа генерируется с 500 HTTP Status и ZuulException в ответе тела JSON.
{
"timestamp": 1459973637928,
"status": 500,
"error": "Internal Server Error",
"exception": "com.netflix.zuul.exception.ZuulException",
"message": "Forwarding error"
}
Все, что я хочу сделать, это настроить или удалить ответ JSON и, возможно, изменить код состояния HTTP.
Я попытался создать обработчик исключений с помощью @ControllerAdvice, но обработчик не захватил исключение.
ОБНОВЛЕНИЯ:
Итак, я расширил фильтр Zuul. Я вижу, как он попадает в метод запуска после того, как ошибка была выполнена, как мне тогда изменить ответ. Ниже то, что я получил до сих пор. Я где-то читал о 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();
}
ErrorController
также может помочь кому-то справиться с ошибкой пересылки: jmnarloch.wordpress.com/2015/09/16/ - person Vladimir Salin   schedule 08.06.2017