Spring Boot集成validation用于優(yōu)雅的校驗(yàn)API參數(shù)的合法性

validation主要是校驗(yàn)用戶提交的數(shù)據(jù)的合法性,比如是否為空,密碼是否符合規(guī)則,郵箱格式是否正確等等,校驗(yàn)框架比較多,用的比較多的是hibernate-validator, 也支持國(guó)際化,也可以自定義校驗(yàn)類型的注解,這里只是簡(jiǎn)單的演示校驗(yàn)框架在Spring Boot中的簡(jiǎn)單集成,要想了解更多可以參考 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="手機(jī)號(hào)格式不正確") private String phone; @Min(value=18) @Max(value = 200) private int age; @NotBlank @Length(min=6, max=12, message="昵稱長(zhǎng)度為6到12位") private String nickname; // Getter & Setter}

3. controller

import org.springframework.validation.BindingResult;import org.springframework.validation.FieldError;@RestControllerpublic 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("開(kāi)始注冊(cè)用戶..."); return "success"; }}

4. 常用的約束注解

  • @Null 被注釋的元素必須為 null
  • @NotNull 被注釋的元素必須不為 null
  • @AssertTrue 被注釋的元素必須為 true
  • @AssertFalse 被注釋的元素必須為 false
  • @Min(value) 被注釋的元素必須是一個(gè)數(shù)字,其值必須大于等于指定的最小值
  • @Max(value) 被注釋的元素必須是一個(gè)數(shù)字,其值必須小于等于指定的最大值
  • @DecimalMin(value) 被注釋的元素必須是一個(gè)數(shù)字,其值必須大于等于指定的最小值
  • @DecimalMax(value) 被注釋的元素必須是一個(gè)數(shù)字,其值必須小于等于指定的最大值
  • @Size(max=, min=) 被注釋的元素的大小必須在指定的范圍內(nèi)
  • @Digits (integer, fraction) 被注釋的元素必須是一個(gè)數(shù)字,其值必須在可接受的范圍內(nèi)
  • @Past 被注釋的元素必須是一個(gè)過(guò)去的日期
  • @Future 被注釋的元素必須是一個(gè)將來(lái)的日期
  • @Pattern(regex=,flag=) 被注釋的元素必須符合指定的正則表達(dá)式
  • Hibernate Validator 附加的 constraint
  • @NotBlank(message =) 驗(yàn)證字符串非null,且長(zhǎng)度必須大于0
  • @Email 被注釋的元素必須是電子郵箱地址
  • @Length(min=,max=) 被注釋的字符串的大小必須在指定的范圍內(nèi)
  • @NotEmpty 被注釋的字符串的必須非空
  • @Range(min=,max=,message=) 被注釋的元素必須在合適的范圍內(nèi)
  • @URL(protocol=,host=, port=, regexp=, flags=) 被注釋的字符串必須是一個(gè)有效的url
  • @CreditCardNumber 被注釋的字符串必須通過(guò)Luhn校驗(yàn)算法,銀行卡,信用卡等號(hào)碼一般都用Luhn計(jì)算合法性
  • @ScriptAssert(lang=, script=, alias=) 要有Java Scripting API 即JSR 223 (“Scripting for the JavaTM Platform”)的實(shí)現(xiàn)
  • @SafeHtml(whitelistType=, additionalTags=) classpath中要有jsoup包
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容