使用spring-boot-starter-validation做校验:
SpringBoot参数校验_Love皮的博客-CSDN博客_springboot参数校验
可能出现BindException、ConstraintViolationException、MethodArgumentNotValidException三种异常
常用的有:
@NotNull | 被注解的元素必须不为空 |
@NotBlank | 元素必须为字符串,不为空 |
@Min(value) | 被注解的元素必须是一个数字,其值必须大于等于指定的最大值 |
@Max(value) | 被注解的元素必须是一个数字,其值必须小于等于指定的最大值 |
@Size(max, min) | 被注解的元素的长度必须在指定的范围内 |
参数也可以定义成类,每个参数作为类的一个属性,在属性上使用注解
public class UserForm {
@ApiModelProperty(value = "页码")
@Min(value = 1, message = "page最小为1")
private Integer page = 1;
在函数参数中,使用@Valid才会生效 如果需要校验body,加上require = false控制是否必传 @RequestBody(require = false)
@GetMapping(value = "/list")
public Response list(@Valid UserForm form) {}
@PostMapping(value = "/login")
public Response login(@RequestBody(required = false) @Valid UserForm form) {}
如果不定义类,直接在函数参数中定义param,加上注解:
@RequestParam(value = "username", required = false, defaultValue = "goodman")
@Validated
@RestController
@RequestMapping(value = "/role", produces = MediaType.APPLICATION_JSON_VALUE)
public class RoleController {
@GetMapping(value = "/getPerms")
public Response getPerms( @NotNull(message = "id不能为空") Long id)