Spring boot (с spring MVC) перестал отправлять тело в ответах по умолчанию об ошибках (возможно, после обновления версии) - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть более или менее простое приложение CRUD Spring MVC с минимумом бизнес-логики. Поэтому я довольно сильно зависел от обработки исключений по умолчанию, просто комментируя мои классы исключений с помощью @ResponseStatus для управления кодами состояния с помощью пары обработчиков @ExceptionHandler для нескольких особых случаев. Недавно я заметил, что в тех случаях, когда я зависел от обработки по умолчанию, мои ответы имеют пустые тела, в отличие от ранее содержавшего сообщение из исключения (пользовательский @ExceptionHandler работает правильно).

Я пытался заглянуть на страницу с белой меткой, но все, что я могу найти, - это инструкции по настройке или отключению, ничего относительно неправильной конфигурации или чего-то подобного. Я подозреваю, что это вызвано обновлением новых зависимостей весенней загрузки и / или весеннего облака, но не могу найти ничего, что могло бы объяснить это в примечаниях к выпуску

Я ожидаю JSON, содержащий сообщение об ошибке, в отличие от текущего полностью пустого тела.

1 Ответ

0 голосов
/ 17 апреля 2019
@ControllerAdvice
public class ExceptionController {

    @ExceptionHandler({Exception.class})
    public ResponseEntity handler1(Exception e){
        System.out.println("error occurred!");
        ResponseStatus status = AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class);
        HttpStatus res=null;
        if(status!=null){
               res=status.value()!=null?status.value():(status.code()!=null?status.code():null);
        }
        ResponseResult result = new ResponseResult();
        result.setErrorCode(res!=null?res.value():500);
        result.setMsg(e.getMessage());
        return new ResponseEntity(result,res==null?HttpStatus.INTERNAL_SERVER_ERROR:res);
    }

}
@Setter
@Getter
public class ResponseResult {
    private String msg;

    private int errorCode;
}

Таким образом, он возвращает JSON с сообщением об ошибке, а http-статус ответа - 500 или статус, который вы аннотировали в своем классе исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...