バリデーションと例外処理

React 連携を想定する場合、入力不正時のレスポンス形式を揃えることが重要です。Spring Boot の Validation と `@ControllerAdvice` で実装できます。

入力バリデーション

public record CreateBookRequest(
  @NotBlank(message = "title is required")
  @Size(max = 120, message = "title must be <= 120")
  String title
) {}
@PostMapping
public BookDto create(@Valid @RequestBody CreateBookRequest request) {
  return service.create(request);
}

例外ハンドラ

@RestControllerAdvice
public class GlobalExceptionHandler {
  @ExceptionHandler(MethodArgumentNotValidException.class)
  @ResponseStatus(HttpStatus.BAD_REQUEST)
  public ErrorResponse handleValidation(MethodArgumentNotValidException ex) {
    return ErrorResponse.of("VALIDATION_ERROR", "入力値が不正です");
  }
}

共通エラー形式

{
  "code": "VALIDATION_ERROR",
  "message": "入力値が不正です",
  "timestamp": "2026-02-15T12:00:00Z"
}

フロントエンド側では code を主キーにしてエラーメッセージを振り分けると、 文言変更が発生しても UI 側実装が壊れにくくなります。