SpringBoot 接口API对数据格式的验证 数据验证 格式验证 Validation
【代码】SpringBoot 接口API对数据格式的验证 数据验证 格式验证 Validation。
·
依赖
<!--数据验证-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
参数验证
直接在实体类中定义
@Data
public class User {
@Pattern(regexp = "^[A-Za-z0-9]{4,9}$", message = "用户名格式错误")
private String name;
@Min(18)
@Max(100) //限制年龄大小
@NotNull
private 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统一异常处理
@ControllerAdvice
public class GlobalExceptionHandler {
//处理POST验证异常
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseBody
@ResponseStatus(HttpStatus.BAD_REQUEST) // 设置返回的状态码为 400
public 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数据验证
@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统一异常处理
@ExceptionHandler(ConstraintViolationException.class)
@ResponseBody
@ResponseStatus(HttpStatus.BAD_REQUEST) // 设置返回的状态码为 400
public R handleConstraintViolationException(ConstraintViolationException ex) {
return R.error(400,ex.getMessage(),null);
}
统一返回格式
@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);
}
}
更多推荐
所有评论(0)