SpringBootでのリクエストパラメータのバリデーションの実装方法は何ですか?

Spring Bootでは、リクエストパラメータのバリデーションを実装するために、JSR 303仕様のアノテーションを使用することができます。具体的な手順は以下の通りです:

  1. Controllerクラス内のリクエストメソッドのパラメーターの前に、@Validatedや@NotBlankなどのバリデーションアノテーションを追加してください。
@RestController
@RequestMapping("/api")
@Validated
public class UserController {
    
    @PostMapping("/user")
    public ResponseEntity<String> createUser(@Valid @RequestBody UserDto userDto) {
        // 处理请求参数
        return ResponseEntity.ok("User created successfully");
    }
}
  1. DTO クラスを作成し、リクエストパラメータをカプセル化し、DTO クラスの属性にバリデーションアノテーションを追加します。
public class UserDto {

    @NotBlank(message = "Name is mandatory")
    private String name;

    @Email(message = "Email should be valid")
    private String email;

    // getter and setter
}
  1. Controllerクラス内にグローバルな例外処理を定義し、検証に失敗した例外をキャッチしてエラーメッセージを返す。
@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ResponseBody
    public ResponseEntity<String> handleValidationException(MethodArgumentNotValidException ex) {
        BindingResult result = ex.getBindingResult();
        List<String> errorMessages = result.getAllErrors().stream()
                .map(DefaultMessageSourceResolvable::getDefaultMessage)
                .collect(Collectors.toList());
        return ResponseEntity.badRequest().body(String.join(", ", errorMessages));
    }
}

したがって、リクエストパラメータのバリデーションに失敗した場合、対応するエラーメッセージが返されます。Spring Bootはリクエストパラメータを自動的にバリデーションし、検証に失敗した場合にMethodArgumentNotValidException例外をスローします。グローバル例外処理はこの例外をキャッチしてエラーメッセージを返します。

广告
広告は10秒後に閉じます。
bannerAds