Пример проекта, прикрепленного здесь
Я следую этой статье Обработка ошибок API (также, пожалуйста, предложите, если есть лучший способ сделать это) для обработки исключенийи проверки в общем виде в моей весенней загрузке службы отдыха.(Я новичок в весне и отдыхе, поэтому я рассматриваю различные статьи для моего требования)
Основная идея о требовании:
(Необходимо проверить запрос POST и отправить ошибки проверкиклиенту структурным способом. Может быть несколько ошибок проверки)
Всякий раз, когда я получаю запрос POST от моего клиента, мне нужно проверить RequestBody
.Поэтому я добавил @Valid
к параметру и @NotNull
к свойствам, которые я хочу проверить.После получения запроса POST пружина проверяет запрос и выдает MethodArgumentNotValidException
, что хорошо, так как у меня пропущено обязательное поле.Я занимаюсь этим в общем месте с @ControllerAdvice
.После нажатия соответствующего метода handleMethodArgumentNotValid(...)
я создаю свой собственный ответ об ошибке APICustomError, который следует из вышеупомянутой статьи.
Когда у меня есть несколько ошибок проверки, я могу зациклить все ошибки и добавить егов список и создание ResponseEntity
с моей пользовательской ошибкой.Но возвращенный ResponseEntity
не имеет моих добавленных ошибок проверки.
Я понял статью и реализовал то же самое в моем проекте, но действительно не получил то, что мне не хватает.
Нижеэто результат, указанный в статье, и то, что я ожидаю, это:
{
"apierror":{
"status":"BAD_REQUEST",
"timestamp":"10-07-2019 12:53:24",
"message":"Validation error",
"subErrors":[
{
"object":"person",
"field":"id",
"rejectedValue":null,
"message":"ID cannot be null"
},
{
"object":"person",
"field":"name",
"rejectedValue":null,
"message":"name cannot be null"
}
]
}
}
, но ниже это то, что я получаю.Я не вижу часть subErrors.
{"message":"Validation Error","debugMessage":null,"detail":null,"httpStatus":"BAD_REQUEST","timestamp":"2019-07-10T17:08:00.52"}
Любая помощь приветствуется.