依赖
<!--数据验证-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId>
</dependency>
参数验证
直接在实体类中定义
java">@Data
public class User {@Pattern(regexp = "^[A-Za-z0-9]{4,9}$", message = "用户名格式错误")private String name;@Min(18)@Max(100) //限制年龄大小@NotNullprivate Integer age;@NotBlank(message = "该字段不能为空或仅包含空格")@Size(min = 6, max = 20, message = "密码长度必须大于6小于20")private String password;
}
- @NotNull: 该字段不能为 null。
- @NotBlank: 该字段不能为空或仅包含空格(通常用于 String 类型)。
- @Size(min, max): 字符串的长度必须在指定的范围内。
- @Min(value): 数字类型的最小值。
- @Max(value): 数字类型的最大值。
- @Email: 验证该字段是否符合电子邮件格式。
- @Pattern(regexp): 使用正则表达式验证字段。
- @Past: 验证日期字段是否在当前日期之前。
- @Future: 验证日期字段是否在当前日期之后。
POST数据验证
@PostMapping("/v")
public R get(@RequestBody @Valid User user){return R.success("成功",user);
}
POST统一异常处理
java">@ControllerAdvicepublic class GlobalExceptionHandler {//处理POST验证异常@ExceptionHandler(MethodArgumentNotValidException.class)@ResponseBody@ResponseStatus(HttpStatus.BAD_REQUEST) // 设置返回的状态码为 400public R MethodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e) {FieldError fieldError = (FieldError) e.getAllErrors().get(0);String fieldName = fieldError.getField();String errorMessage = fieldError.getDefaultMessage();return R.error(400,fieldName+errorMessage,null);}}
GET数据验证
java">@RestController
@Validated // 启用方法级验证
@RequiredArgsConstructor
public class TestController
{@GetMapping("/v")public R get( @RequestParam(required = true) @Min(value = 1, message = "非法的值") Long id){return R.success("成功",id);}
}
GET统一异常处理
java">@ExceptionHandler(ConstraintViolationException.class)
@ResponseBody
@ResponseStatus(HttpStatus.BAD_REQUEST) // 设置返回的状态码为 400
public R handleConstraintViolationException(ConstraintViolationException ex) {return R.error(400,ex.getMessage(),null);
}
统一返回格式
java">@Data
public class R {public R(int code,String meg,Object data){this.code=code;this.meg=meg;this.data=data;}private int code;private String meg;private Object data;public static R success(String meg,Object data){return new R(200,meg,data);}public static R error(int code,String meg,Object data){return new R(code,meg,data);}
}