У меня есть @ControllerAdvice, расширяющий ResponseEntityExceptionHandler в качестве попытки для меня контролировать стандартный ответ для любого исключения, вызванного в рабочем процессе вызова API.
Без совета Контроллера. Я получаю общий ответ на основе HTML, сгенерированный spring с правильными заголовками ответа. Но когда я добавляю свой @ControllerAdvice, Spring не отвечает общим телом ошибки. Тело пустое с правильными заголовками ответа
@Override
protected ResponseEntity<Object> handleMissingServletRequestParameter(MissingServletRequestParameterException ex,
HttpHeaders headers, HttpStatus status, WebRequest request) {
String erroMessage = "Required Parameter: '"+ex.getParameterName()+"' was not available in the request.";
TrsApiError apiError = new ApiError(HttpStatus.BAD_REQUEST, erroMessage, ex, ApiErrorCode.INVALID_REQUEST);
return buildResponseEntity(apiError);
}
Итак, теперь, если в запросе отсутствует обязательный параметр, поток красиво запускает мою переопределенную реализацию и отвечает полезной нагрузкой JSON с описанием ошибки. Но в случае любого другого исключения, такого как HttpMediaTypeNotAcceptableException, spring отвечает пустым телом.
Прежде чем я добавил свой совет, spring отвечал общим ответом об ошибке. Я новичок в экосистеме весенней загрузки. Нужна помощь в понимании того, является ли это ожидаемым поведением, или существует ли лучший подход для достижения централизованной обработки ошибок.