您好,登錄后才能下訂單哦!
這篇文章給大家介紹SpringBoot如何校驗yue-library框架,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
輕量級服務端校驗框架
支持注解、功能齊全、使用簡便
主要提供便捷的后臺數據校驗功能,支持單個字段或參數校驗,也支持通過注解校驗對象,用法簡單。
提供基本的非空、長度、大小等校驗方法,也提供一些特殊的正則校驗、身份證、電話、郵箱、IP等校驗方法。
@Valid
被注解的元素是一個POJO對象,用于檢查此對象的所有被注解字段的值是否符合預期
Bean Validation 中內置的 constraint
注解 | 作用 |
---|---|
@Null | 被注解的元素必須為 null |
@NotNull | 被注解的元素必須不為 null |
@NotBlank | 被注解的元素必須不為空,并且必須包含至少一個非空白字符 |
@NotEmpty | 被注解的元素必須非空 |
@AssertTrue | 被注解的元素必須為 true |
@AssertFalse | 被注解的元素必須為 false |
@Max | 被注解的元素必須是一個數字,其值必須小于等于指定的最大值 |
@Min | 被注解的元素必須是一個數字,其值必須大于等于指定的最小值 |
@DecimalMax | 被注解的元素必須是一個數字,其值必須小于等于指定的最大值 |
@DecimalMin | 被注解的元素必須是一個數字,其值必須大于等于指定的最小值 |
@Digits | 被注解的元素必須是一個數字,其值必須在可接受的范圍內 |
@Positive | 被注解的元素必須是嚴格意義上的正數 |
@PositiveOrZero | 被注解的元素必須是正數或0 |
@Negative | 被注解的元素必須是一個嚴格意義上的負數 |
@NegativeOrZero | 被注解的元素必須是負數或0 |
@Past | 被注解的元素必須是過去的某個瞬間、日期或時間 |
@PastOrPresent | 被注解的元素必須是過去或現在的某個瞬間、日期或時間 |
@Future | 被注解的元素必須是將來的某個瞬間、日期或時間。 |
@FutureOrPresent | 被注解的元素必須是當前或將來的某個瞬間、日期或時間。 |
@Size | 被注解的元素的大小必須在指定的范圍內 |
被注解的元素必須是電子郵箱地址 | |
@Pattern | 被注解的元素必須符合指定的正則表達式 |
Hibernate Validator 附加的 constraint
注解 | 作用 |
---|---|
@Length | 被注解的字符串的大小必須在指定的范圍內 |
@Range | 被注解的元素必須在合適的范圍內 |
@URL | 驗證帶注解的字符串是否為URL |
@Currency | 貨幣金額必須在正確的貨幣單位 |
@CreditCardNumber | 帶注解的元素必須表示有效的信用卡號 |
@CodePointLength | 驗證包含字符序列的代碼點長度在min和max之間 |
@ConstraintComposition | 布爾運算符,應用于組合約束注解的所有約束 |
@SafeHtml | 驗證用戶提供的富文本值,以確保它不包含惡意代碼,例如嵌入的<script> 元素 |
@UniqueElements | 驗證所提供集合中的每個對象都是惟一的,即不能在集合中找到兩個相等的元素 |
@EAN | 檢查帶注解的字符序列是否是有效的EAN 13號。驗證數字的長度和校驗數字 |
@ISBN | 檢查帶注解的字符序列是否是有效的ISBN。數字的長度和校驗數字都經過驗證 |
@LuhnCheck | Luhn算法檢查約束 |
@Mod10Check | Modulo 10 檢查約束 |
@Mod11Check | Modulo 11 檢查約束 |
@ParameterScriptAssert | 方法級約束,它根據帶注解的方法或構造函數計算腳本表達式 |
@ScriptAssert | 類級約束,它根據帶注解的元素計算腳本表達式 |
Yue Validator 附加的 constraint
注解 | 作用 |
---|---|
@Cellphone | 手機號校驗 |
@IdCard | 身份證校驗 |
@PlateNumber | 中國車牌號校驗 |
@Birthday | 生日校驗 |
@Chinese | 中文校驗 |
@English | 英語校驗 |
@UUID | UUID校驗 |
@IPV4 | IPV4地址校驗 |
@IPV6 | IPV6地址校驗 |
@MacAddress | MAC地址校驗 |
單個參數驗證
// 參數 String name = validationIPO.getName(); String email = validationIPO.getEmail(); String cellphone = validationIPO.getCellphone(); int age = validationIPO.getAge(); DateTime birthday = validationIPO.getBirthday(); // 獲得參數校驗器-Bean注入 import ai.yue.library.base.validation.Validator; @Autowired private Validator validator; // 獲得參數校驗器-靜態方法 Validator.getValidatorAndSetParam(email).email("email"); // 單個參數校驗 validator.param(email).email("email"); validator.param(cellphone).cellphone("cellphone"); validator.param(name).notNull("name").chinese("name").length(1, 30, "name");
單個參數校驗-通過param()連寫(連寫直接切換校驗對象)
validator.param(name).notNull("name").param(email).length(5, 25, "email").param(age).min(20, "age").max(60, "age");
在類的屬性上定義注解,同時支持自定義錯誤信息
@Data public class ValidationIPO { @NotEmpty(message = "姓名不能為空") @Length(max = 20, message = "姓名不能超過20個字") private String name; private DateTime birthday; @IdCard private String idcard; @Max(30) @Min(12) private int age; @Email @Length(max = 50) private String email; @Cellphone private String cellphone; @Pattern(regexp = "[1-9]([0-9]{5,11})") private String qq; }
方式一: Controller
層,通過注解@Valid
校驗 (推薦)
@PostMapping("/valid") public Result<?> valid(@Valid ValidationIPO validationIPO) {
方式二: 通過調用validator.valid()方法
validator.valid(validationIPO); // 同樣支持連寫 validator.valid(validationIPO).param(birthday).birthday("birthday");
方式三: 將@Valid
注解添加到POJO類上
@Data @Valid public class ValidationIPO { // ... }
并在Controller
層接收此實體參數
@PostMapping("/valid") public Result<?> valid(ValidationIPO validationIPO) {
校驗不通過會拋出ValidateException(運行時異常),ResultExceptionHandler
類已默認處理。
錯誤響應示例:
{ "code": 433, "msg": "參數校驗未通過,請參照API核對后重試", "flag": false, "count": null, "data": [ { "errorkey": "cellphone", "errorValue": null, "errorHintMsg": "不是一個合法的手機號碼" }, { "errorkey": "idcard", "errorValue": "500223199607125633", "errorHintMsg": "不是一個合法的身份證號碼" } ] }
關于SpringBoot如何校驗yue-library框架就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。