第十二篇:SpringBoot 2.x数据校验

介绍

在项目的过程中,对于参数的校验是必须的,如果参数比较少的话我们可以直接通过代码进行校验,但是数据较大时再用这个方法就比较笨重了,接下来就该我们的主角Validation闪亮登场了

pom.xml

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>

实际上在这里数据校验都是调用的javax.validationspring-boot-starter-web中也包含了hibernate-validator,有兴趣的可以去翻翻文档

User.java

package com.priv.gabriel.entity; import lombok.Data; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; /** * Created with Intellij IDEA. * * @Author: Gabriel * @Date: 2018-10-23 * @Description: */ @Data public class User { @NotBlank(message = "name不允许为空") @Length(min = 2,max = 10,message = "你的长度不对劲呀") private String name; @NotNull(message = "进入未成年人入内!") @Min(18) private int age; @NotBlank(message = "拒绝黑户") private String address; }

接下来只需要在Controller层中使用@valid进行校验就可以了

package com.priv.gabriel.controller; import com.priv.gabriel.entity.User; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; /** * Created with Intellij IDEA. * * @Author: Gabriel * @Date: 2018-10-23 * @Description: */ @RestController @RequestMapping("/user") public class UserController { @RequestMapping("/check") public String check(@Valid User user){ return "检测完毕!没有问题"; } }

Rest Client工具简单检测一下

9988457-d46bb655cc1d4505.png
image.png

结果当然是...

{ "timestamp": "2018-10-23T09:01:45.159+0000", "status": 400, "error": "Bad Request", "errors": [{ "codes": ["Length.user.name", "Length.name", "Length.java.lang.String", "Length"], "arguments": [{ "codes": ["user.name", "name"], "arguments": null, "defaultMessage": "name", "code": "name" }, 10, 2], "defaultMessage": "你的长度不对劲呀", "objectName": "user", "field": "name", "rejectedValue": "", "bindingFailure": false, "code": "Length" }, { "codes": ["Min.user.age", "Min.age", "Min.int", "Min"], "arguments": [{ "codes": ["user.age", "age"], "arguments": null, "defaultMessage": "age", "code": "age" }, 18], "defaultMessage": "最小不能小于18", "objectName": "user", "field": "age", "rejectedValue": 17, "bindingFailure": false, "code": "Min" }, { "codes": ["NotBlank.user.address", "NotBlank.address", "NotBlank.java.lang.String", "NotBlank"], "arguments": [{ "codes": ["user.address", "address"], "arguments": null, "defaultMessage": "address", "code": "address" }], "defaultMessage": "拒绝黑户", "objectName": "user", "field": "address", "rejectedValue": "", "bindingFailure": false, "code": "NotBlank" }, { "codes": ["NotBlank.user.name", "NotBlank.name", "NotBlank.java.lang.String", "NotBlank"], "arguments": [{ "codes": ["user.name", "name"], "arguments": null, "defaultMessage": "name", "code": "name" }], "defaultMessage": "name不允许为空", "objectName": "user", "field": "name", "rejectedValue": "", "bindingFailure": false, "code": "NotBlank" }], "message": "Validation failed for object='user'. Error count: 4", "path": "/user/check" }

好了,到这里可以看到我们的设置已经生效了,关于数据校验你get到了吗?
项目下载地址


__EOF__

本文作者Gabriel
本文链接https://www.cnblogs.com/youarephoenix/p/15972927.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   gabriel丶  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示