700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【SpringBoot框架篇】26.集成spring-boot-starter-validation对接口参数校验

【SpringBoot框架篇】26.集成spring-boot-starter-validation对接口参数校验

时间:2024-03-12 04:06:12

相关推荐

【SpringBoot框架篇】26.集成spring-boot-starter-validation对接口参数校验

文章目录

1.常规验证2.使用validation验证2.1.添加依赖2.2.常用注解2.3.在pojo类中添加需要使用的注解2.4.在接口入参处添加@Valid2.5.添加全局异常处理类返回校验错位提示信息 3.项目配套代码

1.常规验证

以下面的登录接口为例,需要手动去验证参数是否存在,这种写法繁琐且不太优雅。

@RestControllerpublic class LoginController {@RequestMapping("/login")public String test(@RequestBody User user){if(user.getUserName()!=null && user.getPassword()!=null){//查数据库验证逻辑省略System.out.println(user);return "登录成功";}else{return "参数不能为null";}}}

2.使用validation验证

2.1.添加依赖

<!-- spring-boot 2.3及以上的版本需要引入包 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>

2.2.常用注解

以下注解都支持通过message字段自定义错位提示信息,例如 @NotEmpty(message=“账号不能为空”)

2.3.在pojo类中添加需要使用的注解

以添加用户接口为例,验证提交的数据并对@Valid注解对UserDetail 对象里属性进行嵌套校验。

public class User {@NotBlankprivate String userName;@NotBlank@Length(min = 6,max = 12)private String password;@Valid@NotNull(message = "不能为空")private UserDetail userDetail;//省略get set 方法}public class UserDetail {@NotBlankprivate String address;@Max(60)@Min(18)@NotNullprivate Integer age; //省略get set 方法}

2.4.在接口入参处添加@Valid

@PostMapping("/save")public String loginValid(@Valid @RequestBody User user){System.out.println(user);return "保存成功";}

2.5.添加全局异常处理类返回校验错位提示信息

@ControllerAdvicepublic class ControllerException {@ResponseBody@ExceptionHandler(MethodArgumentNotValidException.class)public Object handleValidException(MethodArgumentNotValidException e) {//将错误信息返回给前台String field, msg;StringBuilder sb = new StringBuilder();for (FieldError fieldError : e.getBindingResult().getFieldErrors()) {// 获取错误验证字段名field = fieldError.getField();msg = fieldError.getDefaultMessage();sb.append("参数名[").append(field).append("]").append(msg).append(",");}sb.deleteCharAt(sb.length() - 1);return sb.toString();}}

测试接口,可以看到添加的校验规则都生效了。

3.项目配套代码

github地址

创作不易,要是觉得我写的对你有点帮助的话,麻烦在github上帮我点下Star

【SpringBoot框架篇】其它文章如下,后续会继续更新。

1.搭建第一个springboot项目2.Thymeleaf模板引擎实战3.优化代码,让代码更简洁高效4.集成jta-atomikos实现分布式事务5.分布式锁的实现方式6.docker部署,并挂载配置文件到宿主机上面7.项目发布到生产环境8.搭建自己的spring-boot-starter9.dubbo入门实战10.API接口限流实战11.Spring Data Jpa实战12.使用druid的monitor工具查看sql执行性能13.使用springboot admin对springboot应用进行监控14.mybatis-plus实战15.使用shiro对web应用进行权限认证16.security整合jwt实现对前后端分离的项目进行权限认证17.使用swagger2生成RESTful风格的接口文档18.使用Netty加websocket实现在线聊天功能19.使用spring-session加redis来实现session共享20.自定义@Configuration配置类启用开关21.对springboot框架编译后的jar文件瘦身22.集成RocketMQ实现消息发布和订阅23.集成smart-doc插件零侵入自动生成RESTful格式API文档24.集成FastDFS实现文件的分布式存储25.集成Minio实现文件的私有化对象存储26.集成spring-boot-starter-validation对接口参数校验27.集成mail实现邮件推送带网页样式的消息28.使用JdbcTemplate操作数据库29.Jpa+vue实现单模型的低代码平台30.使用sharding-jdbc实现读写分离和分库分表31.基于分布式锁或xxl-job实现分布式任务调度32.基于注解+redis实现表单防重复提交

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。