SpringBoot 接口API对数据格式的验证 数据验证 格式验证 Validation

embedded/2024/12/22 16:32:52/

依赖

<!--数据验证-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId>
</dependency>

参数验证

直接在实体类中定义

java">@Data
public class User {@Pattern(regexp = "^[A-Za-z0-9]{4,9}$", message = "用户名格式错误")private String name;@Min(18)@Max(100) //限制年龄大小@NotNullprivate Integer age;@NotBlank(message = "该字段不能为空或仅包含空格")@Size(min = 6, max = 20, message = "密码长度必须大于6小于20")private String password;
}
  • @NotNull: 该字段不能为 null。
  • @NotBlank: 该字段不能为空或仅包含空格(通常用于 String 类型)。
  • @Size(min, max): 字符串的长度必须在指定的范围内。
  • @Min(value): 数字类型的最小值。
  • @Max(value): 数字类型的最大值。
  • @Email: 验证该字段是否符合电子邮件格式。
  • @Pattern(regexp): 使用正则表达式验证字段。
  • @Past: 验证日期字段是否在当前日期之前。
  • @Future: 验证日期字段是否在当前日期之后。

POST数据验证

@PostMapping("/v")
public R get(@RequestBody @Valid User  user){return  R.success("成功",user);
}

POST统一异常处理

java">@ControllerAdvicepublic class GlobalExceptionHandler {//处理POST验证异常@ExceptionHandler(MethodArgumentNotValidException.class)@ResponseBody@ResponseStatus(HttpStatus.BAD_REQUEST) // 设置返回的状态码为 400public R MethodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e) {FieldError fieldError = (FieldError) e.getAllErrors().get(0);String fieldName = fieldError.getField();String errorMessage = fieldError.getDefaultMessage();return R.error(400,fieldName+errorMessage,null);}}

GET数据验证

java">@RestController
@Validated  // 启用方法级验证
@RequiredArgsConstructor
public class TestController
{@GetMapping("/v")public R get( @RequestParam(required = true) @Min(value = 1, message = "非法的值") Long id){return  R.success("成功",id);}
}

GET统一异常处理

java">@ExceptionHandler(ConstraintViolationException.class)
@ResponseBody
@ResponseStatus(HttpStatus.BAD_REQUEST) // 设置返回的状态码为 400
public R handleConstraintViolationException(ConstraintViolationException ex) {return R.error(400,ex.getMessage(),null);
}

统一返回格式

java">@Data
public class R {public R(int code,String meg,Object data){this.code=code;this.meg=meg;this.data=data;}private  int code;private  String meg;private Object data;public static R success(String meg,Object data){return  new R(200,meg,data);}public static R error(int code,String meg,Object data){return  new R(code,meg,data);}
}

在这里插入图片描述


http://www.ppmy.cn/embedded/147868.html

相关文章

道路运输企业安全生产管理人员安全考核试题

道路运输企业安全生产管理人员安全考核试题 一、单选题 题干&#xff1a;在公交车行驶过程中&#xff0c;乘客王某因与驾驶员发生矛盾&#xff0c;遂殴打驾驶员并抢夺方向盘&#xff0c;造成其他乘客受轻微伤&#xff0c;依照《中华人民共和国刑法》的规定&#xff0c;王某触…

vue应用移动端访问缓慢问题

由于移动端的javascript处理引擎相对于pc端在处理复杂计算或大量数据时&#xff0c;可能会出现性能瓶颈&#xff0c;从而导致访问页面缓慢严重还会出现白屏情况&#xff0c;所以针对此问题做以下处理提升性能。 1、打包时压缩js文件 安装TerserPlugin插件 npm install terser…

中国人工智能学会技术白皮书

中国人工智能学会的技术白皮书具有多方面的重要作用&#xff0c;是极具权威性和价值的参考资料。 看看编委会和编写组的阵容&#xff0c;还是很让人觉得靠谱的 如何下载这份资料呢&#xff1f;下面跟着步骤来吧 步骤一&#xff1a;进入中国智能学会官网。百度搜索“中国智能学…

完全二叉树【东北大学oj数据结构9-1】C++

完全二叉树 所有叶子都具有相同深度且所有内部节点的度数为2的二叉树称为完全二叉树。 另外&#xff0c;将二叉树除最低层以外的所有层都完全填充&#xff0c;从左到最后节点依次填充最低层的树&#xff0c;也称为&#xff08;粗略地&#xff09;完全二叉树。 如果表示二叉堆的…

Web应用中的CSRF防护机制

什么是CSRF攻击&#xff1f; CSRF (Cross-site request forgery) 跨站请求伪造是一种常见的网络攻击方式。攻击者诱导用户访问已被攻击者控制的网页时&#xff0c;利用用户在被攻击网站已经获取的注册凭证&#xff0c;绕过后台的用户验证&#xff0c;冒充用户对被攻击的网站发…

Linux中部署项目

1.下载JDK17 进入 /usr/local 目录&#xff0c;创建 java 文件夹。并将 JDK17 上传到 java 目录下。 上传成功后&#xff0c;通过cd命令进入Java文件夹目录&#xff0c;解压 JDK17 压缩包&#xff0c;命令 unzip zulu17.44.53-ca-jdk17.0.8.1-linux_x64.zip。 如果报错说 u…

蓝叠模拟器adb连接并配置网络代理

说在前面&#xff1a; 由于配置wsl导致原模拟器失效&#xff0c;选择了蓝叠模拟器&#xff08;下载安装器后会自动配置为Hyper-v版本&#xff09;蓝叠国际不能自动配置root&#xff0c;需要手动破解&#xff0c;此处选择的是蓝叠中国&#xff08;二者可以同时安装并共存&#…

端口聚合配置

配置端口聚合 本文中端口聚合配置任务描述了如何配置以太网端口聚合。 概述 端口聚合&#xff0c;即将几个属性相同的物理端口聚合绑定到一起形成一个逻辑上的通道。端口的聚合方式可以是将几个物理端口静态的聚合到一起而不管与这些物理端口相连的端口是否符合聚合的条件&a…