背景:当前端调用后端接口时,接口参数校验是必不可少的,spring validation提供了一系列校验规则,直接使用注解即可,无需手动写校验逻辑。
1.引入pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2.常用注解说明
- @NotNull。确保字段不为null,可以用于对象和集合类型。
- @Null。确保字段为null。
- @NotBlank。确保去掉空格字符串不为空且长度大于0。
- @NotEmpty。确保集合不为空。
- @Size(max, min)。限制字符串、集合、数组的大小。
- @Min(value)。确保数字字段大于等于指定值。
- @Max(value)。确保数字字段小于等于指定值。
- @DecimalMin(value)。确保数字字段大于等于指定的小数值。
- @DecimalMax(value)。确保数字字段小于等于指定的小数值。
- @Digits(integer, fraction)。限制数字的整数和小数位数。
- @Past。确保日期是过去的日期。
- @Future。确保日期是未来的日期。
- @Pattern(value)。确保字符串匹配指定的正则表达式。
- @Email。确保字段是有效的电子邮件地址。
- @Length(max)。限制字符串的长度。
- @Range。确保数字字段在指定范围内。
- @AssertTrue和@AssertFalse。分别确保布尔值字段为true或false。
3.使用示例
3.1.接收参数对象,字段添加需要校验的规则注解,如@NotBlank;
@Data
public class TestParam implements Serializable {
/**
* message的内容可以自定义,也可以使用默认的话术
*/
@NotBlank(message = "自定义iconTypeCode不能为空")
private String iconTypeCode;
@Min(5)
@Max(20)
private Integer iconNum;
@NotEmpty
private List<String> iconList;
}
3.2 Controller中接口添加@Valid注解
@PostMapping("/test")
public ResultJsonObjectNew test(@Valid @RequestBody TestParam param) {
return null;
}
4.测试
4.1发送请求
4.2 查看结果
{
"timestamps": 1714459065248,
"code": 203,
"msg": "字段[iconList]:不得为空,字段[iconTypeCode]:自定义iconTypeCode不能为空,字段[iconNum]:必须大于或等于 5",
"success": false
}