大家好,我是阿远。最近正在开发一个知识库学习网站编程猫,需要对请求参数进行校验,很是头疼,最近前两天认识一个阿里的员工偷偷告诉我了两种方式。比如说非空啊、长度限制啊等等,可选的解决方案有两种:
-
一种是用 Hibernate Validator 来处理
-
一种是用全局异常来处理
两种方式,我们一一来实践体验一下。
一、Hibernate Validator
Spring Boot 已经内置了 Hibernate Validator 校验框架,这个可以通过 Spring Boot 官网查看和确认。
第一步,进入 Spring Boot 官网,点击 learn 这个面板,点击参考文档。
第二步,在参考文档页点击「依赖的版本」。
第三步,在依赖版本页就可以查看到所有的依赖了,包括版本号。
PS:如果发现没有起效,可能是依赖版本冲突了,手动把 Hibernate Validator 依赖添加到 pom.xml 文件就可以了。
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.17.Final</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
通过 Hibernate Validator 校验框架,我们可以直接在请求参数的字段上加入注解来完成校验。
具体该怎么做呢?
第一步,在需要验证的字段上加上 Hibernate Validator 提供的校验注解。
比如说我现在有一个用户名和密码登录的请求参数 UsersLoginParam 类:
@Data
@ApiModel(value="用户登录", description="用户表")
public class UsersLoginParam implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "登录名")
@NotBlank(message="登录名不能为空")
private String userLogin;
@