@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。
更多详细信息,请参阅 验证 部分。