在执行POST请求并读取用户使用Spring Boot Rest API输入的POST数据时进行JSON模式验证

catCoder69:

如何在使用指定模式POST请求期间验证(使用指定模式)用户输入的JSON(每次通过POST请求接收到JSON数据时,我们都必须验证JSON数据)?另外,如何实际提取用户从发布请求中输入的数据?我执行以下操作来提取输入用户的数据

@PostMapping("/all-configs")
public Animal createConfig( @RequestBody Animal ani) {
try {
    System.out.println(ani);//output: [email protected]
    System.out.println(ani.toString());//output: [email protected]
    String str = ani.toString();
    System.out.println(str);//output: [email protected]
} … … …. .. . ...etc

请帮忙!如何实际读取用户在发布请求中输入的JSON数据?

jump_monkey:

如何使用指定的架构在POST请求期间验证用户的JSON输入(我们必须在每次通过POST请求接收到JSON数据时验证JSON数据)?

添加注释@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

另外,如何实际提取用户从发布请求中输入的数据?

在Animal POJO上使用getter方法。例:

String name = ani.getName();



更新:

另外,如果我有一个像这样的json:{“ hype”:{“ key1”:“ value1”}}…那么如何在hype.key1中访问value1?

@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;
    }
}

输出:

值1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章