- 開発技術
Spring Bootの入力値検証
- #SpringBoot
- #Java
概要
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
Webアプリケーションを運用する上では、ブラウザに入力された値をサーバで処理する場合があります。本記事ではそういった処理を行う前に入力されたデータが正しい値であるか検証する方法についてご紹介いたします。
検証を行うには
今回はBean ValidationというJavaの仕組みとSpringBootが提供するライブラリを用いて入力データの検証を行います。
検証を行うには、以下の3つの記載が必要となります。
- Dependenciesへの記載
- 値の検証を行いたい引数の前に@Validを付与
- データ用クラスに検証規則を付与
pom.xmlのDependenciesに「spring-boot-starter-validation」, 「lombok」を記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<dependencies> … <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> … </dependencies> |
続いて、値の検証を行いたい引数の前に@Validを付与し、エラー取得用の引数としてBindingResultを追加します。今回はPOSTリクエストで受け取ったフォームが正しい値であるか検証するため、自作クラスのSampleFormに@Validを付与しています。
1 2 3 4 5 6 7 |
@PostMapping public ResponseEntity<Map<String, List<String>>> postForm(@Valid SampleForm request, BindingResult result){ if(result.hasErrors()) { return ResponseEntity.badRequest().body(errToMap(result)); } return ResponseEntity.ok(null); } |
BindingResultにエラーが含まれる場合、Json形式に変換して返却しています。
次に、SampleFormの各変数に対して検証規則を指定します。これらを満たさない場合は前述のBindingResultにエラーが格納されます。
1 2 3 4 5 6 7 8 9 10 |
@Data public class SampleForm implements Serializable { @Min(0) @Max(999999) private long id; @NotNull @NotBlank private String name; } |
動作確認
Postman(https://www.postman.com/)を用いて、送信されたデータが正常値・異常値の場合に動作確認を行いました。
正常値のデータ内容・返却結果
異常値のデータ内容・返却結果
正常値の場合にエラーが返却されず、異常値の場合にエラー内容を取得できていることが確認できます。
まとめ
今回はSpringBootの入力値検証について、概要と利用方法を解説しました。 間違いやご指摘などあるかもしれませんが、読者の方のお役に立てれば幸いです。
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>