@RequestBody
@RequestBody
アノテーションを使用して、リクエスト本体を読み取り、HttpMessageConverter
を介して Object
にデシリアライズすることができます。次の例では、@RequestBody
引数を使用しています。
Java
Kotlin
@PostMapping("/accounts")
public void handle(@RequestBody Account account) {
// ...
}
@PostMapping("/accounts")
fun handle(@RequestBody account: Account) {
// ...
}
MVC 構成のメッセージコンバーターオプションを使用して、メッセージ変換を構成またはカスタマイズできます。
フォームデータは、常に確実に使用できるとは限らない @RequestBody ではなく、@RequestParam を使用して読み取る必要があります。これは、サーブレット API では、リクエストパラメーターアクセスによってリクエストボディが解析され、再度読み取ることができないためです。 |
@RequestBody
を jakarta.validation.Valid
または Spring の @Validated
アノテーションと組み合わせて使用できます。どちらも標準 Bean 検証が適用されます。デフォルトでは、検証エラーにより MethodArgumentNotValidException
が発生し、これが 400(BAD_REQUEST)レスポンスに変換されます。または、次の例に示すように、Errors
または BindingResult
引数を使用して、コントローラー内で検証エラーをローカルで処理できます。
Java
Kotlin
@PostMapping("/accounts")
public void handle(@Valid @RequestBody Account account, Errors errors) {
// ...
}
@PostMapping("/accounts")
fun handle(@Valid @RequestBody account: Account, errors: Errors) {
// ...
}
他のパラメーターに @Constraint
アノテーションがあるためにメソッド検証が適用される場合は、代わりに HandlerMethodValidationException
が発生します。詳細については、検証のセクションを参照してください。