Конечная точка API Springboot, «зависимые-необязательные» параметры

#java #spring-boot #api #rest

#Ява #пружинный ботинок #API #остальное

Вопрос:

Объект запроса конечной точки имеет 5 свойств, и 2 из них являются обязательными. Но есть 2 определенных варианта использования, либо будут предоставлены только 2 из них, либо будут предоставлены все. т. е.: поле 1-поле 2-поле 5 не может быть предоставлено. Может быть вызвано исключение или может произойти сбой метода проверки.

Как эта необязательная зависимость может быть отражена в коде?

Дополнительный вопрос: во время вызова api контроллер заполняет значения объекта запроса с помощью методов контроллера или установщика (или как)?

Версия Springboot : 2.2.13.РЕЛИЗ

Версия Java : 1.8.0_232

Класс запроса, FooQuery.java

 @NoArgsConstructor @AllArgsConstructor @RequiredArgsConstructor @Getter @Setter public class FooQuery {  @NonNull  @NotNull(message = "Field can not be null or empty")  @NotEmpty(message = "Field can not be null or empty")  @NotBlank(message = "Field can not be null or empty")  private String field1; //Mandatory   @NonNull  @NotNull(message = "Field can not be null or empty")  @NotEmpty(message = "Field can not be null or empty")  @NotBlank(message = "Field can not be null or empty")  private String field2; //Mandatory   private String[] fields3; //Optional  private String field4; //Optional  private String field5; //Optional }  

Класс контроллера, ControllerClass.java:

 public class ControllerClass{  public FooResponse fooEndpoint(@Valid @RequestBody FooQuery params) throws Exception {  return foo.doBar(params);  } }