今天小编给大家分享一下SpringBoot接口怎么对参数进行校验的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。后端对前端传过来的参数也是需要进行校验的,如果在controller中直接校验需要用大量的if else做判断以添加用户的接口为例,需要对前端传过来的参数进行校验, 如下的校验就是不优雅的:针对这个普遍的问题,Java开者在Java API规范 (JSR303) 定义了Bean校验的标准validation-api,但没有提供实现。hibernate validation是对这个规范的实现,并增加了校验注解如@Email、@Length等。Spring Validation是对hibernate validation的二次封装,用于支持spring mvc参数自动校验。接下来,我们以springboot项目为例,介绍Spring Validation的使用。本例子采用 spring validation 对参数绑定进行校验,主要给你提供参数校验的思路。针对接口统一的错误信息(比如绑定参数检查的错误)封装请看SpringBoot接口如何统一异常处理添加pom依赖:单一职责,所以将查询用户的参数封装到UserParam中, 而不是User(数据库实体)本身。对每个参数字段添加validation注解约束和message。使用@Valid或者@Validate注解,参数校验的值放在BindingResult中POST访问添加User的请求后台输出参数绑定错误信息:(包含哪个对象,哪个字段,什么样的错误描述)2021-09-16 10:37:05.173 ERROR 21216 — [nio-8080-exec-8] t.p.s.v.controller.UserController : Invalid Parameter : object – userParam,field – nickName,errorMessage – could not be empty
2021-09-16 10:37:05.176 ERROR 21216 — [nio-8080-exec-8] t.p.s.v.controller.UserController : Invalid Parameter : object – userParam,field – email,errorMessage – could not be empty
2021-09-16 10:37:05.176 ERROR 21216 — [nio-8080-exec-8] t.p.s.v.controller.UserController : Invalid Parameter : object – userParam,field – cardNo,errorMessage – could not be empty(本例只是springboot-validation的简单用例,针对接口统一的错误信息封装请看SpringBoot接口如何统一异常处理我们再通过一些问题来帮助你更深入理解validation校验。@pdai上面的例子中,其实存在一个问题,UserParam既可以作为addUser的参数(id为空),又可以作为updateUser的参数(id不能为空),这时候怎么办呢?分组校验登场。这时候可以使用Validation分组先定义分组(无需实现接口)在UserParam的userId字段添加分组免费云主机域名controller中的接口使用校验时使用分组PS: 需要使用@Validated注解测试细心的你会发现,上个例子中用的是@Validate, 而不是@Valid,那它们之间的区别是什么呢?在检验Controller的入参是否符合规范时,使用@Validated或者@Valid在基本验证功能上没有太多区别。但是在分组、注解地方、嵌套验证等功能上两个有所不同:分组@Validated:提供了一个分组功能,可以在入参验证时,根据不同的分组采用不同的验证机制,这个网上也有资料,不详述。@Valid:作为标准JSR-303规范,还没有吸收分组的功能。注解地方@Validated:可以用在类型、方法和方法参数上。但是不能用在成员属性(字段)上@Valid:可以用在方法、构造函数、方法参数和成员属性(字段)上嵌套类型比如本文例子中的address是user的一个嵌套属性, 只能用@Valid从以下三类理解。JSR303/JSR-349: JSR303是一项标准,只提供规范不提供实现,规定一些校验规范即校验注解,如@Null,@NotNull,@Pattern,位于javax.validation.constraints包下。JSR-349是其的升级版本,添加了一些新特性。hibernate validation:hibernate validation是对这个规范的实现,并增加了一些其他校验注解,如@Email,@Length,@Range等等spring validation:spring validation对hibernate validation进行了二次封装,在springmvc模块中添加了自动校验,并将校验信息封装进了特定的类中如果上面的注解不能满足我们检验参数的要求,我们能不能自定义校验规则呢? 可以。定义注解定义校验器使用以上就是“SpringBoot接口怎么对参数进行校验”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注百云主机行业资讯频道。
相关推荐: Java中new BigDecimal()的坑怎么解决
今天小编给大家分享一下Java中newBigDecimal()的坑怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。先看一段代码示例:输出结…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。