Spring Bootの@Validatedでリクエストパラメータのバリデーションを行う




どうも高妻です。Twitterでプログラミングのことや暗号通貨のことをつぶやいているのでよかったらフォローしてください。  

バリデーション

Spring Bootではクライアントからのリクエストパラメータをアノテーションだけで簡単にバリデーションすることができます。

バリデーションとは送られてきた値がサーバが想定していたものか判定することを言います。例えばString型のパラメータでNULLは許容しないけど空文字は許容するなどの設定をアノテーションを使って簡単に行うことができます。

今回はバリデーションの設定方法を中心に紹介したいと思います。

リクエストパラメータを受け取るクラス

クライアントからのリクエストを専用のクラスを作成して受け取ります。このクラスでどんなパラメータを受け取るかバリデーションを設定します。

下記SampleRequestクラスではwordというパラメータを受け取ります。String型で@NotBlankを設定することでwordにはNULL、空文字列、スペースのみの文字列を受け取ることができ無くなります。

これがアノテーションによる設定です。非常に簡単ですね。

コントローラ

リクエストを受け取るクラスにアノテーションを設定するだけではバリデーションは行えません。リクエストを受け取るコントローラにも設定を行います。

@Validatedアノテーションをバリデーションを有効化したい変数に対して設定するだけです。

実際にcurlでリクエストを投げるとwordパラメータが空文字でエラーになります。

BindingResult

BindingResultを使うとコントローラ内でエラーを扱うことができます。BindingResultの@Controllerを使うサーバサイドレンダリングな実装をしている時に使うのがベターみたいです。例えばサーバサイドからリダイレクト処理を行ったりとかですね。

@RestControllerを使ってRESTfullなAPIを実装している場合のエラーハンドリングはExceptionHandler内で処理するのが一般的とのことです。ExeptionHandlerの実装は下記を参考にしてください。

関連記事:Spring Bootでエラーハンドラーを実装する

The following two tabs change content below.

高妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 現在はTwitterなどSNSのテキスト解析を行うソーシャルメディア分析のサーバーサイドを開発中。言語はNode.js、Kotlinを使用。






コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です