Spring Boot @PostMapping есть ли способ обнаружить пустые поля в теле входящего запроса?

#spring-boot #hibernate

Вопрос:

В Spring Boot @PostMapping есть ли способ обнаружить пустые поля в теле входящего запроса перед отображением тела запроса в определенный класс?

Мое отображение поста выглядит так,

   @PostMapping("/post")
    public ResponseEntity<User> insertFromBody(
            @Valid @RequestBody  User user) {
        //call service class
}
 

Класс пользователя

 @Entity
@Table(name="Users")
public class User {
    @Id
    @JsonProperty("USER")
    @Column(name = "USER")
    private String userId;

    @JsonProperty("FIRST_NAME")
    @Column(name = "FIRST_NAME")
    private String firstname;

    @JsonProperty("LAST_NAME")
    @Column(name = "LAST_NAME")
    private String lastname;
    
    @JsonProperty("AGE")
    @Column(name = "AGE")
    private String age;

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}
 

Тело запроса может быть следующим,

 1st type
{
   "ID":1,
   "FIRST_NAME":"JOHN"
}

2nd type
{
   "ID":1,
   "FIRST_NAME":"JOHN",
   "LAST_NAME":null,
   "AGE":null
}
 

Итак, перед сопоставлением тела запроса с объектом пользователя есть ли способ обнаружить пустые поля?
(хотите различать типы запросов 1 и 2)

Ответ №1:

  1. добавьте зависимость «org.springframework.boot:spring.boot.starter.проверка»
  2. добавить @NotNull в поле не-null
  3. Добавить @Valid

Ответ №2:

Да , используйте @NotNull и @Valid , это вызовет исключение, поэтому я рекомендую использовать обработчик исключений для форматирования сообщения. Вот статья о том, как использовать валидатор