在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数进行校验,例如登录的时候需要校验用户名和密码是否为空,添加用户的时候校验用户邮箱地址、手机号码格式是否正确。 靠代码对接口参数一个个校验的话就太繁琐了,代码可读性极差。
Validator框架就是为了解决开发人员在开发的时候少写代码,提升开发效率;Validator专门用来进行接口参数校验,例如常见的必填校验,email格式校验,用户名必须位于6到12之间等等。
接下来我们看看在SpringbBoot中如何集成参数校验框架。
1|0SpringBoot中集成参数校验
1|1引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
1|2定义参数实体类
package com.didiplus.modules.sys.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
/**
* Author: didiplus
* Email: 972479352@qq.com
* CreateTime: 2022/4/25
* Desc: 字典类型领域模型
*/
@Data
@ApiModel(value = "字典类型")
public class SysDictType {
@ApiModelProperty("ID")
private String id;
@NotBlank(message = "字典名称必填项")
@ApiModelProperty(value = "字典名称",example = "用户ID")
private String typeName;
@NotBlank(message = "字典编码不能为空")
@ApiModelProperty(value = "字典编码")
private String typeCode;
@Email(message = "请填写正确的邮箱地址")
@ApiModelProperty(value = "字典编码")
private String email;
@ApiModelProperty(value = "字典描述")
private String description;
@NotBlank(message = "字典状态不能为空")
@ApiModelProperty(value = "字典状态")
private String enable;
}
常见的约束注解如下:
注解 |
功能 |
@AssertFalse |
可以为null,如果不为null的话必须为false |
@AssertTrue |
可以为null,如果不为null的话必须为true |
@DecimalMax |
设置不能超过最大值 |
@DecimalMin |
设置不能超过最小值 |
@Digits |
设置必须是数字且数字整数的位数和小数的位数必须在指定范围内 |
@Future |
日期必须在当前日期的未来 |
@Past |
日期必须在当前日期的过去 |
@Max |
最大不得超过此最大值 |