Springboot — проверьте @RequestBodyJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Springboot — проверьте @RequestBody

Сообщение Anonymous »

Вопрос: можно ли проверить полезную нагрузку JSON тела запроса без специального написания операторов if? Может быть, через аннотацию или конфигурацию?
У меня очень простой POJO:

Код: Выделить всё

public class Foo {

private int important;
private String something;

//constructors, getter, seters, toString
}
И очень простой класс контроллера:

Код: Выделить всё

@SpringBootApplication
@RestController
public class QuestionController {

public static void main(String[] args) {
SpringApplication.run(QuestionController.class, args);
}

@GetMapping(value = "/question")
Mono question(@RequestBody Foo foo) {
System.out.println("The object foo, with value for important = " + foo.getImportant() + " and something = " + foo.getSomething());
return Mono.just("question");
}

}
Если я запрашиваю полезную нагрузку, например:

Код: Выделить всё

{
"important": 42,
"something": "value"
}
Все работает отлично, очень доволен.
Однако, если есть опечатка: (обратите внимание на опечатку в слове «важно»)

Код: Выделить всё

{
"importantWithTypo": 42,
"something": "value"
}
Или необходимое «важное» отсутствует (обратите внимание, что JSON даже не полный)

Код: Выделить всё

{
"something": "value"
}
Запрос и вычисление по-прежнему действительны! И значение «важно» равно 0!
Я не хочу, чтобы Spring по умолчанию имел значение 0 и думал, что все в порядке.
Я также не хочу менять свои типы с примитивов на упакованный объект.
Без меня пишу что-то вроде:

Код: Выделить всё

 @GetMapping(value = "/question")
Mono question(@RequestBody Foo foo) {
if (0 == foo.getImportant()) {
throw new IllegalArgumentException();
}
System.out.println("The object foo, with value for important = " + foo.getImportant() + " and something = " + foo.getSomething());
return Mono.just("question");
}
Каков наиболее эффективный способ решить эту проблему? Какая-то аннотация? Или, может быть, конфигурация загрузки Spring?
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/645 ... equestbody
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»