@RequestBody

您可以使用 @RequestBody 注解让请求体通过 HttpMessageConverter 读取并反序列化为 Object。以下示例使用了一个 @RequestBody 参数:

  • Java

@PostMapping("/accounts")
public void handle(@RequestBody Account account) {
  // ...
}

您可以使用 MVC 配置消息转换器 选项来配置或自定义消息转换。

您可以将 @RequestBodyjakarta.validation.Valid 结合使用,或使用 Infra @Validated 注解, 这两者都会导致应用标准 Bean 验证。默认情况下,验证错误会导致 MethodArgumentNotValidException, 该异常会转换为 400 (BAD_REQUEST) 响应。或者,您可以通过 ErrorsBindingResult 参数在控制器内本地处理验证错误, 如下例所示:

  • Java

@PostMapping("/accounts")
public void handle(@Valid @RequestBody Account account, Errors errors) {
  // ...
}

如果因为其他参数具有 @Constraint 注解而应用方法验证,则会引发 HandlerMethodValidationException。 有关更多详细信息,请参阅 验证 部分。