Spring Boot集成validation用于优雅的校验API参数的合法性

227人浏览 / 0人评论

Spring Boot集成validation用于优雅的校验API参数的合法性

validation主要是校验用户提交的数据的合法性,比如是否为空,密码是否符合规则,邮箱格式是否正确等等,校验框架比较多,用的比较多的是hibernate-validator, 也支持国际化,也可以自定义校验类型的注解,这里只是简单的演示校验框架在Spring Boot中的简单集成,要想了解更多可以参考 hibernate-validator

1. pom.xml

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

2. dto

public class UserInfoIDto {
 private Long id;
 @NotBlank
 @Length(min=3, max=10)
 private String username;
 @NotBlank
 @Email
 private String email;
 @NotBlank
 @Pattern(regexp="^((13[0-9])|(15[^4,\\D])|(18[0,3-9]))\\d{8}$", message="手机号格式不正确")
 private String phone;
 @Min(value=18)
 @Max(value = 200)
 private int age;
 @NotBlank
 @Length(min=6, max=12, message="昵称长度为6到12位")
 private String nickname;
 // Getter & Setter
}

3. controller

import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
@RestController
public class SimpleController {
 @PostMapping("/users")
 public String register(@Valid @RequestBody UserInfoIDto userInfoIDto, BindingResult result){
 if (result.hasErrors()) {
 FieldError fieldError = result.getFieldError();
 String field = fieldError.getField();
 String msg = fieldError.getDefaultMessage();
 return field + ":" + msg;
 }
 System.out.println("开始注册用户...");
 return "success";
 }
}
Spring Boot集成validation用于优雅的校验API参数的合法性

 

4. 常用的约束注解

  • @Null 被注释的元素必须为 null
  • @NotNull 被注释的元素必须不为 null
  • @AssertTrue 被注释的元素必须为 true
  • @AssertFalse 被注释的元素必须为 false
  • @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @Size(max=, min=) 被注释的元素的大小必须在指定的范围内
  • @Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
  • @Past 被注释的元素必须是一个过去的日期
  • @Future 被注释的元素必须是一个将来的日期
  • @Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式
  • Hibernate Validator 附加的 constraint
  • @NotBlank(message =) 验证字符串非null,且长度必须大于0
  • @Email 被注释的元素必须是电子邮箱地址
  • @Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
  • @NotEmpty 被注释的字符串的必须非空
  • @Range(min=,max=,message=) 被注释的元素必须在合适的范围内
  • @URL(protocol=,host=, port=, regexp=, flags=) 被注释的字符串必须是一个有效的url
  • @CreditCardNumber 被注释的字符串必须通过Luhn校验算法,银行卡,信用卡等号码一般都用Luhn计算合法性
  • @ScriptAssert(lang=, script=, alias=) 要有Java Scripting API 即JSR 223 (“Scripting for the JavaTM Platform”)的实现
  • @SafeHtml(whitelistType=, additionalTags=) classpath中要有jsoup包

全部评论