JSON проверка схемы при выполнении запроса POST и чтении данных POST, введенных пользователем с использованием Spring boot rest api - PullRequest
0 голосов
/ 21 июня 2020

Как проверить (используя указанную схему) JSON ввод пользователем во время запроса POST с использованием указанной схемы (мы должны проверять данные JSON каждый раз он получен через запрос POST)? Кроме того, как на самом деле извлечь данные, введенные пользователем, из почтового запроса? Я сделал следующее, чтобы извлечь данные, введенные моим пользователем :

@PostMapping("/all-configs")
public Animal createConfig( @RequestBody Animal ani) {
try {
    System.out.println(ani);//output: net.company.sprinboot.model.Animal@110e19d9
    System.out.println(ani.toString());//output: net.company.sprinboot.model.Animal@110e19d9
    String str = ani.toString();
    System.out.println(str);//output: net.company.sprinboot.model.Animal@110e19d9
} … … …. .. . ...etc

Пожалуйста, помогите! Как я могу на самом деле прочитать данные JSON, введенные пользователем в почтовом запросе?

1 Ответ

1 голос
/ 21 июня 2020

Как проверить ввод 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

...