在前后端分离的开发模式中,后端对前端传入的参数的校验成了必不可少的一个环节。但是在多参数的情况下,在controller层加上参数验证,会显得特别臃肿,并且会有许多的重复代码。这里可以引用Hibernate Validator来解决这个问题,直接在实体类进行参数校验,验证失败直接返回错误信息给前端,减少controller层的代码量。
一、pom引入Hibernate Validator
1 | <!-- 验证器 --> |
二、通过注解在实体类进行参数校验
1 |
|
这里用到的参数校验的注解有@NotNull和@Range,message是到时候我们返回给前端的信息,注解的具体意思如下:
1 | null 被注释的元素必须为 |
三、controller层的方法加上@Valid注解
1 |
|
controller层这里只需要在实体类的前面加上@Valid注解,这个注解可以实现数据的验证。这里BindingResult是存储了校验时的错误信息,验证有误时将错误信息返回给前端。这里不使用BindingResult的时候,控制台会报MethodArgumentNotValidException,这里可以通过自定义异常类来捕捉它,然后去掉BindingResult,以及难看的if判断。
四、自定义异常类捕捉MethodArgumentNotValidException
1 |
|
使用PostMan的测试结果如下:
具体的代码可以在我的github上面查看,https://github.com/ruiyeclub/SpringBoot-Hello