简要说明:
引入jar包
需要加全局异常处理
springboot2.3以后需要手动引包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
具体使用
1.校验实体(不一定非要写@RequestBody)
@PostMapping("/register")
public HttpResult<Boolean> register(@Validated @RequestBody ThirdRegister tr){
List<ThirdRegister> trList = thirdRegisterService.listByMap(Collections.singletonMap("key_id", tr.getKeyId()));
if(trList!=null && trList.size()>0){
thirdRegisterService.removeByMap(Collections.singletonMap("key_id", tr.getKeyId()));
}
thirdRegisterService.save(tr);
return new HttpResult().success(200,"保存成功!",true);
}
public class ThirdRegister implements Serializable {
@TableId(value = "id", type = IdType.UUID)
private String id;
@NotBlank(message="视频地址不能为空")
private String videoUrl;
@NotBlank(message="回调地址不能为空")
private String backUrl;
@NotBlank(message="唯一标识不能为空")
private String keyId;
private String dataTypes;
}
2.交验单个参数(无论是get请求还是post请求都一样)
①在类上添加@Validated
②在接口上添加校验注解,示例写法如下
@PostMapping("/start")
public HttpResult<Boolean> start(@NotBlank String keyId){
List<ThirdRegister> trList = thirdRegisterService.listByMap(Collections.singletonMap("key_id", keyId));
if(trList!=null && trList.size()>0){
thirdRegisterUtil.startRecieveData(trList.get(0));
}else{
return new HttpResult().error(404,"资源不存在!");
}
return new HttpResult().success(200,"success",true);
}
3.对象级联校验
只需要在实体上加入@Valid 即可
@Data
@Accessors(chain = true)
public class Book {
private Integer id;
@NotBlank(message = "name 不允许为空")
@Length(min = 2, max = 10, message = "name 长度必须在 {min} - {max} 之间")
private String name;
@Valid
private Author author;
@Data
@Accessors(chain = true)
public static class Author {
@NotBlank(message = "Author.name 不允许为空")
private String name;
}
}