我来为您讲解“Spring请求参数校验功能实例演示”的完整攻略,首先我们需要了解以下几点:
- Spring请求参数校验依赖于Hibernate Validator(JSR 380)。
- 在Controller层使用@Valid注解对参数进行校验。
- 在参数对象中使用Hibernate Validator的注解对属性进行校验。
接下来我们将透过两个示例来进行具体演示:
示例1:对整个对象进行校验
首先在pom.xml中引入Hibernate Validator的依赖:
<!-- Hibernate Validator -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.5.Final</version>
</dependency>
其次在Controller类中使用@Valid注解对请求参数进行校验:
@RestController
public class UserController {
@PostMapping("/user")
public ResponseEntity<String> createUser(@Valid @RequestBody User user) {
// 创建用户操作
return ResponseEntity.ok("用户创建成功");
}
}
最后在User对象中使用Hibernate Validator的注解对属性进行校验:
public class User {
@NotNull
private String name; // 名称
@Min(18)
@Max(60)
private Integer age; // 年龄
// 省略getter和setter方法
}
当请求参数不满足校验规则时,将会抛出MethodArgumentNotValidException异常,异常信息将会被包装为json格式返回给前端。
当请求参数满足校验规则时,将会执行创建用户操作,返回“用户创建成功”的信息。
示例2:对部分属性进行校验
有时我们需要仅对对象中的部分属性进行校验,我们可以使用@Validated注解结合@Valid注解实现:
首先在User类中定义多个校验组:
public interface CreateUserGroup {}
public interface UpdateUserGroup {}
分别在需要校验的属性上标注校验组:
public class User {
@NotNull(groups = {CreateUserGroup.class})
private String name; // 名称
@Min(value = 18, groups = {CreateUserGroup.class, UpdateUserGroup.class})
@Max(value = 60, groups = {CreateUserGroup.class, UpdateUserGroup.class})
private Integer age; // 年龄
// 省略getter和setter方法
}
在Controller中使用@Validated注解,并指定需要校验的校验组:
@RestController
public class UserController {
@PostMapping("/user")
public ResponseEntity<String> createUser(@Validated(CreateUserGroup.class) @RequestBody User user) {
// 创建用户操作
return ResponseEntity.ok("用户创建成功");
}
@PutMapping("/user/{userId}")
public ResponseEntity<String> updateUser(@PathVariable Integer userId,
@Validated(UpdateUserGroup.class) @RequestBody User user) {
// 更新用户操作
return ResponseEntity.ok("用户更新成功");
}
}
当请求参数不满足校验规则时,将会抛出MethodArgumentNotValidException异常,异常信息将会被包装为json格式返回给前端。
当请求参数满足校验规则时,将会执行创建用户或更新用户操作,返回“用户创建/更新成功”的信息。
以上就是“Spring请求参数校验功能实例演示”的完整攻略,希望能对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring请求参数校验功能实例演示 - Python技术站