下面我就为您讲解一下“SpringBoot controller参数校验方法详细讲解”的攻略。
一、前言
Spring Boot 是一个非常流行的 Java 开发框架,可用于快速构建高效率的应用程序。在我们使用 Spring Boot 进行开发的过程中,请求参数的校验也是非常重要的一环。本文将详细讲解 Spring Boot Controller 参数校验的方法,包括常用校验注解的使用。
二、常用校验注解
1. @NotNull
@NotNull 注解用于校验参数不能为 null。
@PostMapping("/user")
public String addUser(@NotNull(message = "用户名不能为空") String username,
@NotNull(message = "密码不能为空") String password) {
// 处理逻辑
}
2. @NotBlank
@NotBlank 注解用于校验参数不能为空字符串,同时去除首尾空格后不为空。
@PostMapping("/user")
public String addUser(@NotBlank(message = "用户名不能为空") String username,
@NotBlank(message = "密码不能为空") String password) {
// 处理逻辑
}
3. @Max 和 @Min
@Max 和 @Min 注解用于校验参数的最大值和最小值。
@PostMapping("/goods")
public String addGoods(@NotNull(message = "价格不能为空") @Max(value = 10000, message = "商品价格不能超过10000") BigDecimal price) {
// 处理逻辑
}
4. @Size
@Size 注解用于校验参数的长度或大小。
@PostMapping("/goods")
public String addGoods(@NotNull(message = "商品名称不能为空") @Size(max = 100, message = "商品名称不能超过100个字符") String name) {
// 处理逻辑
}
5. @Validated
@Validated 注解用于开启参数校验。
@RestController
@Validated
public class UserController {
@PostMapping("/user")
public String addUser(@NotNull(message = "用户名不能为空") String username,
@NotNull(message = "密码不能为空") String password) {
// 处理逻辑
}
}
三、校验异常处理
在 Spring Boot 中,如果请求参数不符合校验规则,会抛出 ConstraintViolationException 异常,我们可以通过全局异常处理的方式进行处理。
1. 定义异常处理器类
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(ConstraintViolationException.class)
@ResponseBody
public Result handleConstraintViolationException(ConstraintViolationException e) {
String message = "";
Set<ConstraintViolation<?>> violations = e.getConstraintViolations();
for (ConstraintViolation<?> violation : violations) {
message += violation.getMessage() + ";";
}
return ResultUtil.error(message);
}
}
2. 定义返回结果类
public class Result {
private Integer code;
private String message;
private Object data;
// 省略 get、set 方法
}
3. 测试
@RestController
@Validated
public class UserController {
@PostMapping("/user")
public String addUser(@NotNull(message = "用户名不能为空") String username,
@NotNull(message = "密码不能为空") String password) {
// 处理逻辑
}
}
访问地址 http://localhost:8080/user
,请求体:
{
"username": null,
"password": null
}
返回结果:
{
"code": 500,
"message": "用户名不能为空;密码不能为空;",
"data": null
}
四、示例
1. 校验对象
@PostMapping("/user")
public String addUser(@Validated @RequestBody User user) {
// 处理逻辑
}
public class User {
@NotNull(message = "用户名不能为空")
private String username;
@NotNull(message = "密码不能为空")
@Size(min = 6, message = "密码长度不能小于 6 位")
private String password;
// 省略 get、set 方法
}
2. 校验列表
@PostMapping("/goods")
public String addGoods(@RequestBody @Validated List<Goods> goodsList) {
// 处理逻辑
}
public class Goods {
@NotBlank(message = "商品名称不能为空")
private String name;
@NotNull(message = "价格不能为空")
@Max(value = 10000, message = "商品价格不能超过10000")
private BigDecimal price;
// 省略 get、set 方法
}
以上就是 Spring Boot Controller 参数校验方法的详细讲解,希望能对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot controller参数校验方法详细讲解 - Python技术站