跳到主要内容
版本:7.0.3

@RequestBody

Hunyuan 7b 中英对照 @RequestBody @RequestBody

[参见Reactive栈中的等效内容](../../../webflux controller/ann-methods/requestbody.md)

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

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

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

备注

表单数据应使用@RequestParam来读取,而不是使用@RequestBody,因为@RequestBody并不总是可以可靠地使用。在Servlet API中,访问请求参数会导致请求体被解析,之后就无法再次读取请求体了。

你可以将@RequestBodyjakarta.validation.Valid或Spring的@Validated注解结合使用,这两种方式都会触发标准Bean验证(Standard Bean Validation)的生效。默认情况下,验证错误会引发MethodArgumentNotValidException异常,该异常会转换为400(BAD_REQUEST)响应。或者,你也可以像以下示例所示,在控制器内部本地处理验证错误,通过ErrorsBindingResult参数来实现:

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

如果由于其他参数具有@Constraint注解而需要应用方法验证,则会抛出HandlerMethodValidationException异常。有关更多详细信息,请参阅验证章节。