Как проверить ввод JSON пользователем во время запроса POST с использованием указанной схемы (мы должны проверять данные JSON каждый раз, когда они получены через запрос POST)?
Добавьте аннотацию @Valid
(из javax.validation.valid
), например:
public Animal createConfig(@Valid @RequestBody Animal ani) {
На вашем Animal DTO добавьте аннотации в поля, которые вы хотите пройти проверку, например:
public class Animal implements Serializable {
...
@Size(max = 10)
@NotBlank
private String name;
...
}
Когда Spring Boot находит аргумент, помеченный @Valid, он загружает Hibernate Validator (реализация JSR 380) и просит его выполнить проверку bean-компонента.
Когда проверка не проходит, Spring Boot выдает MethodArgumentNotValidException
.
Кроме того, как на самом деле извлечь данные, введенные пользователем из почтового запроса?
Используйте метод получения для POJO Animal. Пример:
String name = ani.getName();
ОБНОВЛЕНИЕ:
Кроме того, если у меня есть json вроде: {"hype": {"key1": "value1"}}… тогда как мне получить доступ к значению value1 в hype.key1?
@RestController
public class Main {
@PostMapping("/all-configs")
public void createConfig(@Valid @RequestBody Animal ani) {
Map<String, String> hype = ani.getHype();
System.out.println(hype.get("key1"));
}
}
public class Animal implements Serializable {
private Map<String, String> hype;
public Map<String, String> getHype() {
return hype;
}
public void setHype(Map<String, String> hype) {
this.hype = hype;
}
}
Вывод:
value1