18.JSR303数据校验
以新增品牌接口为例
接口代码展示
添加校验注解
前端送的json对应BrandEntity,比如我们需要品牌的名称不能为空:
NotBlank注解表示不允许为null为空为纯空格,还有很多其他注解,这里不一一举例
开启校验
测试效果
自定义错误返回
上面的postman返回的校验失败的结果并不是我们想要的,我们期望的是返回以下这种:
{"code":"400",message:"名称不允许为空"}
也是可以支持的:
这就达到我们的期望结果了
特殊的校验怎么实现
内置的注解可能无法达到一些特殊的要求校验,可以用如下正则的方式实现:
分组校验
比如新增时候我们不需要传ID,但是修改的时候必须传ID使用ID做更新操作。
1.定义分组接口
2.校验的参数的注解
3.接口标注使用哪个分组校验
再这里指定分组校验后智慧校验注解里加了这个分组的,别的分组或者未加任何分组的都不做校验。
4.测试一下
自定义校验注解
有时候复杂的校验逻辑通过正则的方式不容易实现,我们可以自定义一个校验注解要做复杂逻辑的校验。
我们以showStatus字段为例,限制只能输入0或者1
1.定义注解的接口
2.默认message
3.注解实现的校验逻辑代码
4.使用
5.自定义message