在 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 中返回给客户端。

Spring Boot Controller 中使用 Validation 验证参数

原文地址: https://www.cveoy.top/t/topic/mTrM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录