南通网站建设策划书,wordpress表单编辑插件,进入百度知道首页,茅台酒国内营销网络在代码完成后期,为保证数据的正确性和完整性,需要在后端对接口请求的参数进行校验。使用Spring的Validation框架#xff0c;通过添加注解就可以完成参数校验#xff0c;不用写if/else来逻辑判断了。
使用该框架#xff0c;首先在请求参数接收层也就是controller层上方标注V…在代码完成后期,为保证数据的正确性和完整性,需要在后端对接口请求的参数进行校验。使用Spring的Validation框架通过添加注解就可以完成参数校验不用写if/else来逻辑判断了。
使用该框架首先在请求参数接收层也就是controller层上方标注Validated开启校验
然后在需要校验的参数字段上写参数校验注解即可如 public void 方法 NotNull message“不能为空”String name{...}message中写的是提示信息。
如果请求参数是个对象需要在对象前再加Validated注解然后在实例类中标注参数校验注解如 public void 方法 Validated RequestBody User user{...}User实体类中属性字段上加Null等类似的注解
当校验对象中也就是上述实体类中含有对象类型的属性时这是需开启级联校验也就是在该属性上标注Valid开启级联校验。
由于定义的实体类会被多个方法共同使用属性在不同的需求下会有不同的校验规则比如说新增时id需要为null修改时id不能为null这是就要开启分组校验。分组校验需在实体类上定义组的接口在定义和使用的时候都需指定定义出组的名字
比如User类中定义分组接口 public interface Save { } 与 public interface Update { }
private Long id 即id属性上标注NullgroupSave.class和NotNull groupUpdate.class表名在新增保存时生效Null在更新修改时生效NotNull 使用时 public void save ValidatedUser.Save.class RequestBody User user{...}声明生效的组即可
并且需要在全局异常处理器中写明参数校验不符合条件时return给前端的东西如 //校验异常ExceptionHandler(ConstraintViolationException.class)public Result handConstraintViolationException(ConstraintViolationException e) {ListString collect e.getConstraintViolations().stream().map(v - v.getMessage()).collect(Collectors.toList());return Result.error(Arrays.toString(collect.toArray()));}//校验异常ExceptionHandler(BindException.class)public Result handBindException(BindException e) {ListObject collect e.getFieldErrors().stream().map(v - v.getDefaultMessage()).collect(Collectors.toList());return Result.error(Arrays.toString(collect.toArray()));}
将message中的错误信息通过stream流收集到集合collect中集合collect转为数组数组再转为字符串返回给前端。这里代码需根据前端需求返回的错误信息格式进行调整。
常见的校验注解有
1.Null、NotNull、NotBlank、NotEmpty
Null、NotNull 标注范围最广可标注任意元素上NotBlank 只可标注在字符串类型上NotEmpty标注范围比NotBlank大一些可标注在字符串、集合、数组、map类型上。
NotNull标注可以是空串另两个不能为空串NotEmpty也不能为空集合。
其中NotEmpty应用最广
2.Min1、Max100、 Range(min 1,max 100)其中数值只是举例说明表明被标注的属性值只能≥1、≤1、和在这个范围内
Digits(integer 3,fraction 2) 验证数值的精度整数位3位小数位2位即999.99符合要求
3.Size(min 1,max 2) 可以标注在字符串、数组、集合、map上用于控制数组等长度
标注在 private ListString friends 上表示friends集合中的元素1-2个
Length(min 11,max 11) 用于控制字符串长度标注在private String phone上可控制电话号码的位数最小11位最大11位即就是11位
4.AssertTrue、AssertFalse 断言别标注的元素必须为true、false
5.Email 被标注的元素必须是电子邮箱地址URL 被标注的元素必须是一个正确的网址
6.Past、Future 被标注的元素必须是一个过去的日期、将来的日期
7.Pattern(value) 被标注的元素必须符合指定的正则表达式