@RequestBody
您可以使用 @RequestBody
注解将请求主体读取并反序列化为一个 Object
,通过一个 HttpMessageConverter
。以下示例使用 @RequestBody
参数
-
Java
-
Kotlin
@PostMapping("/accounts")
public void handle(@RequestBody Account account) {
// ...
}
@PostMapping("/accounts")
fun handle(@RequestBody account: Account) {
// ...
}
您可以将 @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
。有关更多详细信息,请参阅有关 验证 的部分。