SpringBootでリクエストパラメーターをバリデーションしてみる

はじめに

こんにちは!さいけです。

今回は、タイトルの通りSpringBootでリクエストパラメーターをバリデーションしてみる記事になります。

前提として、本記事では複雑または発展的な内容は含みません!(例えば、バリデーションエラーをハンドリングするとか…)

純粋にリクエストパラメーターが空文字列もしくはnullの場合に、バリデーションエラーが返るようにしてみます。

やってみる

SpringBootでリクエストパラメーターをバリデーションするのは簡単です。

@Validatedと@Validに加えて、BeanValidationアノテーション(@NotNull、@NotBlank、@Size、@Pattern、@Min等)を使えばよいです。

以下、サンプルコードになります。 

ValidationController.Java

@RestController
@Validated
public class ValidationController {

    @GetMapping(value = "/validation")
    public String getPerson(
            @Valid @NotBlank @RequestParam("name") String name,
            @Valid @NotNull @RequestParam("age") Integer age) {
        return "私の名前は" + name + "です。年齢は" + age + "です。";
    }
}

解説

  • @Validatedでクラスがバリデーションを使えるようにする
  • メソッドの引数に@Validを付与すると、その引数はバリデーションされるようになる
  • @NotBlankを付与することで、空文字・空白・nullを許容しなくなる
  • @NotNullを付与することで、nullのみ許容しなくなる

 

上記ファイルが作成できたら、アプリケーションを起動して確認しましょう!

以下、リクエストパスは正常なGETをしたケースです。

nameには太郎が入っており、ageは20です。正常に200レスポンスが返ってきます。

  

次に、バリデーションに引っかかるケースです。

以下のリクエストは、バリデーションに引っかかります。

ageのリクエストパラメーターがnullなので、500エラーが返却されます。

また、エラーの文言で「ageはnullですよ」と怒ってくれています。

  

nameも空文字にしてあげると、以下のようにnameに関してもちゃんと怒ってくれます。

おわりに

今回はSpringBootでリクエストパラメーターをバリデーションするやり方を紹介しました。

アノテーションで簡単にバリデーションができたと思います。ぜひ参考にしてみてください!

また、今回は深く紹介しませんでしたが、BeanValidationアノテーションは色々あるので、調べてみると面白いと思います。

それでは!( ・∇・)ノシ

コメント

タイトルとURLをコピーしました