Как отключить HTML-страницы ошибок Tomcat, когда мой REST API возвращает статус HTTP 500

Я использую аннотации @ControllerAdvice, @ErrorHandler и @ResponseStatus для возврата некоторых сведений об ошибках. Я уверен, что метод-обработчик выполняется (я проверял его в отладчике). Но мой объект ErrorInfo переопределяется HTML-страницей ошибок Tomcat.

@ExceptionHandler(value = ServiceExecutionException.class)
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR, reason = "Internal Server Error")
ErrorInfo handleServiceError(HttpServletRequest request, HttpServletResponse response, Exception e) {
    return new ErrorInfo(request.getRequestURL().toString(), e.getLocalizedMessage());
}

Вот аналогичный вопрос, но он не содержит правильного ответа, потому что я стараюсь не усложнять свой код. Отключить весь контент ответов об ошибках HTTP по умолчанию в Tomcat


person Michał Mielec    schedule 07.10.2015    source источник


Ответы (1)


Попробуй это:

@ExceptionHandler(ServiceExecutionException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ResponseBody
public ResponseEntity<ErrorInfo> handleServiceError(ServiceExecutionException ex,
            HandlerMethod handlerMethod, WebRequest webRequest) {
   String url = ((ServletWebRequest)webRequest).getRequest().getRequestURL().toString();
   ErrorInfo errorInfo = new ErrorInfo(url, ex.getLocalizedMessage());
   return new ResponseEntity<ErrorInfo>(errorInfo, HttpStatus.INTERNAL_SERVER_ERROR);
}
person TechFree    schedule 11.06.2019