Spring Boot Controller 中使用 Validation 验证参数
在 Spring Boot 中使用 spring-boot-starter-validation 进行参数验证非常简单,只需在 Controller 中需要验证的参数上添加 @Validated 注解即可。
示例代码:
@RestController
@RequestMapping("/users")
@Validated // 添加 @Validated 注解
public class UserController {
@PostMapping
public ResponseEntity<User> createUser(@Valid @RequestBody User user) {
// 处理创建用户请求
return ResponseEntity.ok(user);
}
}
在上面的示例中,我们在 createUser() 方法的参数上添加了 @Valid 注解,表示需要验证该参数。我们还在类级别上添加了 @Validated 注解,以启用参数验证。
当请求到达 Controller 时,Spring 会自动验证请求体中的参数是否满足要求。如果不满足要求,将会抛出 MethodArgumentNotValidException 异常,我们可以使用 @ExceptionHandler 注解来处理该异常。
示例代码:
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<ErrorResponse> handleMethodArgumentNotValidException(MethodArgumentNotValidException ex) {
BindingResult bindingResult = ex.getBindingResult();
List<FieldError> fieldErrors = bindingResult.getFieldErrors();
ErrorResponse errorResponse = new ErrorResponse();
for (FieldError fieldError : fieldErrors) {
errorResponse.addError(fieldError.getField(), fieldError.getDefaultMessage());
}
return ResponseEntity.badRequest().body(errorResponse);
}
}
上面的示例代码中,我们定义了一个全局的异常处理器,处理 MethodArgumentNotValidException 异常,并将错误信息封装到 ErrorResponse 中返回给客户端。
原文地址: https://www.cveoy.top/t/topic/mTrM 著作权归作者所有。请勿转载和采集!