数据校验的总结

业务层进行复杂检查

简单校验交给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的属性里指定不同的验证组即可。

相关推荐
funfan051721 小时前
Linux/Debian系统中文乱码问题快速修复方法简记
java·linux·debian
@淡 定21 小时前
电商平台库存扣减方案设计
java
bosins21 小时前
基于Python实现PDF转图片工具
开发语言·python·pdf
superman超哥21 小时前
Rust 部分移动(Partial Move)的使用场景:精细化所有权管理的艺术
开发语言·后端·rust·所有权管理·rust部分移动·partial move
麦兜*21 小时前
【Spring Boot 3 + Spring AI】 实战:十分钟集成 OpenAI API 构建智能应用
java·人工智能·spring boot·spring·ai编程·springcloud
rit843249921 小时前
水声信道MATLAB仿真程序
开发语言·matlab
工具罗某人21 小时前
docker快速部署nginx
java·nginx·docker
lsx20240621 小时前
CSS 十六进制颜色
开发语言
.简.简.单.单.21 小时前
Design Patterns In Modern C++ 中文版翻译 第二十三章 模板方法
开发语言·c++·设计模式
2501_9418663721 小时前
面向微服务配置动态更新与灰度发布的互联网系统高可用设计与多语言工程实践分享
java·运维·python