這篇文章給大家介紹SpringBoot如何校驗(yàn)yue-library框架,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
創(chuàng)新互聯(lián)是專業(yè)的青羊網(wǎng)站建設(shè)公司,青羊接單;提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行青羊網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
輕量級(jí)服務(wù)端校驗(yàn)框架
支持注解、功能齊全、使用簡(jiǎn)便
主要提供便捷的后臺(tái)數(shù)據(jù)校驗(yàn)功能,支持單個(gè)字段或參數(shù)校驗(yàn),也支持通過(guò)注解校驗(yàn)對(duì)象,用法簡(jiǎn)單。
提供基本的非空、長(zhǎng)度、大小等校驗(yàn)方法,也提供一些特殊的正則校驗(yàn)、身份證、電話、郵箱、IP等校驗(yàn)方法。
@Valid
被注解的元素是一個(gè)POJO對(duì)象,用于檢查此對(duì)象的所有被注解字段的值是否符合預(yù)期
Bean Validation 中內(nèi)置的 constraint
注解 | 作用 |
---|---|
@Null | 被注解的元素必須為 null |
@NotNull | 被注解的元素必須不為 null |
@NotBlank | 被注解的元素必須不為空,并且必須包含至少一個(gè)非空白字符 |
@NotEmpty | 被注解的元素必須非空 |
@AssertTrue | 被注解的元素必須為 true |
@AssertFalse | 被注解的元素必須為 false |
@Max | 被注解的元素必須是一個(gè)數(shù)字,其值必須小于等于指定的最大值 |
@Min | 被注解的元素必須是一個(gè)數(shù)字,其值必須大于等于指定的最小值 |
@DecimalMax | 被注解的元素必須是一個(gè)數(shù)字,其值必須小于等于指定的最大值 |
@DecimalMin | 被注解的元素必須是一個(gè)數(shù)字,其值必須大于等于指定的最小值 |
@Digits | 被注解的元素必須是一個(gè)數(shù)字,其值必須在可接受的范圍內(nèi) |
@Positive | 被注解的元素必須是嚴(yán)格意義上的正數(shù) |
@PositiveOrZero | 被注解的元素必須是正數(shù)或0 |
@Negative | 被注解的元素必須是一個(gè)嚴(yán)格意義上的負(fù)數(shù) |
@NegativeOrZero | 被注解的元素必須是負(fù)數(shù)或0 |
@Past | 被注解的元素必須是過(guò)去的某個(gè)瞬間、日期或時(shí)間 |
@PastOrPresent | 被注解的元素必須是過(guò)去或現(xiàn)在的某個(gè)瞬間、日期或時(shí)間 |
@Future | 被注解的元素必須是將來(lái)的某個(gè)瞬間、日期或時(shí)間。 |
@FutureOrPresent | 被注解的元素必須是當(dāng)前或?qū)?lái)的某個(gè)瞬間、日期或時(shí)間。 |
@Size | 被注解的元素的大小必須在指定的范圍內(nèi) |
被注解的元素必須是電子郵箱地址 | |
@Pattern | 被注解的元素必須符合指定的正則表達(dá)式 |
Hibernate Validator 附加的 constraint
注解 | 作用 |
---|---|
@Length | 被注解的字符串的大小必須在指定的范圍內(nèi) |
@Range | 被注解的元素必須在合適的范圍內(nèi) |
@URL | 驗(yàn)證帶注解的字符串是否為URL |
@Currency | 貨幣金額必須在正確的貨幣單位 |
@CreditCardNumber | 帶注解的元素必須表示有效的信用卡號(hào) |
@CodePointLength | 驗(yàn)證包含字符序列的代碼點(diǎn)長(zhǎng)度在min和max之間 |
@ConstraintComposition | 布爾運(yùn)算符,應(yīng)用于組合約束注解的所有約束 |
@SafeHtml | 驗(yàn)證用戶提供的富文本值,以確保它不包含惡意代碼,例如嵌入的 元素 |
@UniqueElements | 驗(yàn)證所提供集合中的每個(gè)對(duì)象都是惟一的,即不能在集合中找到兩個(gè)相等的元素 |
@EAN | 檢查帶注解的字符序列是否是有效的EAN 13號(hào)。驗(yàn)證數(shù)字的長(zhǎng)度和校驗(yàn)數(shù)字 |
@ISBN | 檢查帶注解的字符序列是否是有效的ISBN。數(shù)字的長(zhǎng)度和校驗(yàn)數(shù)字都經(jīng)過(guò)驗(yàn)證 |
@LuhnCheck | Luhn算法檢查約束 |
@Mod10Check | Modulo 10 檢查約束 |
@Mod11Check | Modulo 11 檢查約束 |
@ParameterScriptAssert | 方法級(jí)約束,它根據(jù)帶注解的方法或構(gòu)造函數(shù)計(jì)算腳本表達(dá)式 |
@ScriptAssert | 類級(jí)約束,它根據(jù)帶注解的元素計(jì)算腳本表達(dá)式 |
Yue Validator 附加的 constraint
注解 | 作用 |
---|---|
@Cellphone | 手機(jī)號(hào)校驗(yàn) |
@IdCard | 身份證校驗(yàn) |
@PlateNumber | 中國(guó)車(chē)牌號(hào)校驗(yàn) |
@Birthday | 生日校驗(yàn) |
@Chinese | 中文校驗(yàn) |
@English | 英語(yǔ)校驗(yàn) |
@UUID | UUID校驗(yàn) |
@IPV4 | IPV4地址校驗(yàn) |
@IPV6 | IPV6地址校驗(yàn) |
@MacAddress | MAC地址校驗(yàn) |
單個(gè)參數(shù)驗(yàn)證
// 參數(shù) String name = validationIPO.getName(); String email = validationIPO.getEmail(); String cellphone = validationIPO.getCellphone(); int age = validationIPO.getAge(); DateTime birthday = validationIPO.getBirthday(); // 獲得參數(shù)校驗(yàn)器-Bean注入 import ai.yue.library.base.validation.Validator; @Autowired private Validator validator; // 獲得參數(shù)校驗(yàn)器-靜態(tài)方法 Validator.getValidatorAndSetParam(email).email("email"); // 單個(gè)參數(shù)校驗(yàn) validator.param(email).email("email"); validator.param(cellphone).cellphone("cellphone"); validator.param(name).notNull("name").chinese("name").length(1, 30, "name");
單個(gè)參數(shù)校驗(yàn)-通過(guò)param()連寫(xiě)(連寫(xiě)直接切換校驗(yàn)對(duì)象)
validator.param(name).notNull("name").param(email).length(5, 25, "email").param(age).min(20, "age").max(60, "age");
在類的屬性上定義注解,同時(shí)支持自定義錯(cuò)誤信息
@Data public class ValidationIPO { @NotEmpty(message = "姓名不能為空") @Length(max = 20, message = "姓名不能超過(guò)20個(gè)字") 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
層,通過(guò)注解@Valid
校驗(yàn) (推薦)
@PostMapping("/valid") public Result> valid(@Valid ValidationIPO validationIPO) {
方式二:通過(guò)調(diào)用validator.valid()方法
validator.valid(validationIPO); // 同樣支持連寫(xiě) validator.valid(validationIPO).param(birthday).birthday("birthday");
方式三:將@Valid
注解添加到POJO類上
@Data @Valid public class ValidationIPO { // ... }
并在Controller
層接收此實(shí)體參數(shù)
@PostMapping("/valid") public Result> valid(ValidationIPO validationIPO) {
校驗(yàn)不通過(guò)會(huì)拋出ValidateException(運(yùn)行時(shí)異常),ResultExceptionHandler
類已默認(rèn)處理。
錯(cuò)誤響應(yīng)示例:
{ "code": 433, "msg": "參數(shù)校驗(yàn)未通過(guò),請(qǐng)參照API核對(duì)后重試", "flag": false, "count": null, "data": [ { "errorkey": "cellphone", "errorValue": null, "errorHintMsg": "不是一個(gè)合法的手機(jī)號(hào)碼" }, { "errorkey": "idcard", "errorValue": "500223199607125633", "errorHintMsg": "不是一個(gè)合法的身份證號(hào)碼" } ] }
關(guān)于SpringBoot如何校驗(yàn)yue-library框架就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。