数据校验的总结

业务层进行复杂检查

简单校验交给Controller校验,能流到业务的层的数据就是基本合法

引入依赖:spring-boot-starter-validation

能标注的所有注解在这两个地方看

jakarta.validation.constraints、

org.hibernate.validator.constraints

使用步骤:先在dto实体类,给各个属性标记上注解@Email

然后在Controller的参数上放上@Valid或@Validated(更推荐,因为Validated多了分组校验)

这样做完之后就可以完成校验,但是还是不能返回前端message里的信息

所以可以在参数后面加一个BingdingResult,就可以返回更完整的校验信息。(如果想校验哪个参数,就在后面加BingdingResult,而不是放最后)。

如果开启了BingdingResult。一旦写了BingdingResult就会封装在BingdingResult中不会抛出异常,前端就不会看到错误,只会收到200。就需要手动处理校验错误

@Validated支持分组功能,对不同请求实现不同的验证逻辑。

实现的话就是定义不同的接口,也就是不同的分组。然后在@Validated的属性里指定不同的验证组即可。

相关推荐
星火开发设计9 分钟前
模板参数:类型参数与非类型参数的区别
java·开发语言·前端·数据库·c++·算法
忘梓.19 分钟前
二叉搜索树·极速分拣篇」:用C++怒肝《双截棍》分拣算法,暴打节点删除Boss战!
开发语言·c++·算法
星辰徐哥20 分钟前
Java数组的定义、操作与应用场景
java·开发语言
Aileen_0v020 分钟前
【数据结构中链表常用的方法实现过程】
java·开发语言·数据结构·算法·链表·动态规划·csdn开发云
草莓熊Lotso27 分钟前
《算法闯关指南:优选算法--滑动窗口》--15.串联所有单词的子串,16.最小覆盖子串
开发语言·c++·人工智能·算法
Andy Dennis43 分钟前
一文认识Java常见集合
java·开发语言
kyle~2 小时前
Python---Flask 轻量级Web框架
开发语言·python·flask
云深处@2 小时前
【C++11】特殊类&&单例模式
开发语言·c++
烟花落o2 小时前
算法的时间复杂度和空间复杂度
开发语言·数据结构·笔记·算法
玹外之音2 小时前
Spring AI 实战:手把手教你构建支持多会话管理的智能聊天服务
java·spring