Как настроить ответ неудачной проверки при использовании @Valid в SpringBoot - PullRequest
0 голосов
/ 04 августа 2020

Я использую @Valid вместе с @RequestBody для проверки тела запроса пост-вызова конечной точки API, например:

public ResponseEntity<> sendEmail(@Valid @RequestBody EmailPostBody emailPostBody) {
.
.
.
}

Когда проверка не проходит, ответ, как показано ниже, возвращается на вызывающий.

{
    "timestamp": "2020-08-04T02:57:22.839+00:00",
    "status": 400,
    "error": "Bad Request",
    "message": "Validation failed for object='emailPostBody'. Error count: 1",
    "path": "/email"
}

Однако он говорит только «Проверка не удалась», но не указывает, какое поле проблемное. c.

Я хотел бы преобразовать этот ответ в это более конкретно c, но не знаю как.

Может ли кто-нибудь меня научить?

Спасибо!

1 Ответ

1 голос
/ 04 августа 2020
  1. Сначала вам нужно захватить поле errors, используя Errors.
  2. Затем проверьте, соответствует ли errors.hasErrors() true, тогда вы можете отправить свое собственное сообщение об ошибке в ResponseBody.
public ResponseEntity<> sendEmail(@Valid  @RequestBody EmailPostBody emailPostBody, 
                                  Errors errors) {
    if(errors.hasErrors()) {
        new ResponseEntity<>(youResponseBodyWithErrorMsg, httpStatusCode)
    }

}
...