Spring Boot参数校验 Validation入门

琴音袅袅 2024-05-23 ⋅ 35 阅读

引言

在实际项目中,参数校验是非常重要的一环。它能有效地减少无效的接口调用,减少系统的错误和故障。Spring Boot提供了很便捷的参数校验框架,即Validation。本篇博客将介绍如何在Spring Boot中使用Validation进行参数校验。

1. 添加依赖

首先,我们需要在项目的pom.xml文件中添加Validation依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

2. 创建DTO类

我们先来创建一个简单的DTO(数据传输对象)类,用于接收前端传递的参数:

public class UserDTO {
    
    @NotBlank(message = "用户名不能为空")
    private String username;
    
    @NotNull(message = "年龄不能为空")
    @Min(value = 18, message = "年龄不能小于18岁")
    private Integer age;

    // 省略getter和setter方法
}

在这个DTO类中,我们使用了Validation提供的注解来对字段进行校验。@NotBlank用于校验字符串是否为空,@NotNull用于校验对象是否为空,@Min用于校验数值的最小值。

3. 添加校验逻辑

在Controller中,我们可以使用@Valid注解来对DTO进行校验,并通过BindingResult对象来获取校验结果:

@RestController
public class UserController {

    @PostMapping("/users")
    public String createUser(@Valid @RequestBody UserDTO userDTO, BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            StringBuilder errors = new StringBuilder();
            for (FieldError error : bindingResult.getFieldErrors()) {
                errors.append(error.getDefaultMessage()).append("; ");
            }
            return errors.toString();
        }
        // 校验通过,继续业务逻辑
        // ...
        return "创建用户成功";
    }
}

在上述代码中,我们使用@Valid注解对userDTO进行校验,校验结果会保存在bindingResult对象中。如果存在错误,我们遍历校验错误列表,将错误信息添加到errors字符串中,并返回。

4. 测试接口

最后,我们可以使用工具(比如Postman)来测试接口的校验功能。发送一个带有非法参数的POST请求,如:

POST /users

{
    "username": "",
    "age": 16
}

返回结果将会是:

用户名不能为空; 年龄不能小于18岁; 

而发送一个合法的请求,如:

POST /users

{
    "username": "Alice",
    "age": 20
}

返回结果将会是:

创建用户成功

结论

在本篇博客中,我们介绍了如何使用Spring Boot的Validation进行参数校验。通过添加依赖、创建DTO类、添加校验逻辑,并通过测试接口验证了校验的效果。参数校验是保证系统健壮性和安全性的重要手段,希望本篇博客能对你有所帮助。


参考文档:


全部评论: 0

    我有话说: