Поле "сообщение" пусто в ответе на ошибку Spring Boot - PullRequest
11 голосов
/ 27 мая 2020

Я обработал несанкционированное исключение, подобное этому

@ResponseStatus(value= HttpStatus.UNAUTHORIZED)
public class UnauthorizedException extends RuntimeException {
    public UnauthorizedException(String message) {
        super(message);
    }
}

, но когда я выдаю ошибку следующим образом

throw new UnauthorizedException("Invalid credentials");

, я получаю пустое сообщение об ошибке в ответе, как показано ниже

{
    "timestamp": "2020-05-27T13:44:58.032+00:00",
    "status": 401,
    "error": "Unauthorized",
    "message": "",
    "path": "/auth/register"
}

Я пробовал использовать,

throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Invalid credentials");

, но результат все тот же. Когда я добавил зависимость spring-boot-devtools , я получил сообщение, как и ожидалось, с трассировкой стека. Как это исправить?

Версия Spring: 2.3.0 Java Версия: 11.0

1 Ответ

12 голосов
/ 28 мая 2020

Хорошо, они изменили значение по умолчанию для server.error.include-message на «никогда» (см. Раздел комментариев здесь: Информация о выпуске Spring 2.3.0

Все значения по умолчанию перечислены здесь: Справочная документация по загрузке Spring

Просто настройте свой application.yaml (или свойства) следующим образом.

server:
  error:
    include-message: always
    include-binding-errors: always

Помните, что отображается ошибка сообщения могут содержать утечку информации о реализации вашего сервера.

...