※学習中のため、内容に誤りがあるかもしれません。
今回は@RequestBody
と@Valid
の役割に関して簡単にまとめていきます。
@RequestBodyとは?
@RequestBody
は簡単に言うと、受け取ったリクエストのbody部分(JSONなど)を読み取り、
Javaオブジェクトへ変換することができるアノテーションです。
Entityやdtoなどに変換し使用します。
{
"name": "taro",
"email": "test@test.com"
}
@Data
public class ContactDto {
@NotNull
@Size(min=1, max=40)
private String name;
@NotNull
@Email
private String email;
}
@Validとは?
@Valid
はメソッドを実行した際に、バリデーションをかけてくれる処理です
引数として設定しているDTOやEntityのバリデーションアノテーションを有効化してくれる
例(@Email
や@NotNull
など)
実際のコード例
✖バリデーションが無効になる例
@PostMapping("/")
public void save(@RequestBody ContactDto contact) {
service.save(contact);
}
〇バリデーションが有効になる例
@PostMapping("/")
public void save(@Valid @RequestBody ContactDto contact) {
service.save(contact);
}
おわりに
Spring Bootでバリデーションを有効にするためには、@Valid
を忘れずに付与することが大事です!
つまずいている方の参考になれば幸いです