Springboot-后端参数校验

引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.6</version>
    <scope>provided</scope>
</dependency>

待校验实体类User

更多参数校验注解百度,只做示例

@Setter
@Getter
@NoArgsConstructor
public class User {
    // @Size 注解表示一个字符串的长度或者一个集合的大小,必须在某一个范围中
    @Size(min = 5, max = 10, message = "用户名长度介于5-10个字符之间")
    private String name;

    // @NotEmpty 注解表示该字段不能为空
    @NotEmpty(message = "用户地址不为空")
    private String address;

    // @DecimalMin 注解表示对应属性值的下限
    @DecimalMin(value = "1", message = "年龄输入最小为1岁")
    // @DecimalMax 注解表示对应属性值的上限
    @DecimalMax(value = "200", message = "年龄输入最大为200")
    private Integer age;

    // @Email 注解表示对应属性格式是一个 Email
    @Email(message = "邮箱格式输入不正确")
    // @NotNull 注解表示该字段不能为null
    @NotNull(message = "邮箱不能为空")
    private String email;
}

Controller

  • 实体上添加@Valid注解
  • 实体上添加@RequestBody注解(不添加这个报BindException异常而且校验结果有问题,添加之后报正确异常MethodArgumentNotValidException)
@RestController
public class TestController {

    @PostMapping("/user")
    public  String addUser(@Valid @RequestBody User user) {
        return "success";
    }
}

异常处理

可以自定义异常返回格式

@RestControllerAdvice
public class GlobalExceptionHandler {
    /**
     * 参数校验全局异常处理
     * @param e
     * @return
     */
    @ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public Map<String,Object> MethodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e) {
        Map<String,Object> map=new HashMap<>();
        List<String> errors=new ArrayList<>();
        if (!e.getBindingResult().getAllErrors().isEmpty()){
            //循环获取异常信息
            for (ObjectError error:e.getBindingResult().getAllErrors()){
                errors.add(error.getDefaultMessage());
            }
        }
        map.put("code","1");
        map.put("msg",errors);
        return map;
    }
}

使用postman测试

输入:


输入

返回结果:400 Bad Request


返回结果

具体返回错误信息:
返回信息
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。