Spring Boot集成validation用於優雅的校驗API參數的合法性

validation主要是校驗用戶提交的數據的合法性,比如是否為空,密碼是否符合規則,郵箱格式是否正確等等,校驗框架比較多,用的比較多的是hibernate-validator, 也支持國際化,也可以自定義校驗類型的註解,這裡只是簡單的演示校驗框架在Spring Boot中的簡單集成,要想了解更多可以參考 hibernate-validator

1. pom.xml

<code>
 org.springframework.boot
 spring-boot-starter-validation
/<code>

2. dto

<code>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
}/<code>

3. controller

<code>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";
 }
}/<code>
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=,>
  • @SafeHtml(whitelistType=, additionalTags=) classpath中要有jsoup包


分享到:


相關文章: