@RequestBody
您可以使用@RequestBody
注解,通过HttpMessageConverter
将请求体读取并反序列化为一个Object
。以下示例使用了@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
。有关更多详细信息,请参阅有关验证的部分。