这篇文章给大家介绍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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。