此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Framework 6.2.10spring-doc.cadn.net.cn

@RequestBody

您可以使用@RequestBody注释,让请求正文读取并反序列化为Object通过HttpMessageConverter. 以下示例使用@RequestBody论点:spring-doc.cadn.net.cn

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

您可以使用 MVC 配置的“消息转换器”选项来配置或自定义消息转换。spring-doc.cadn.net.cn

表单数据应使用@RequestParam, 不与@RequestBody这并不总是可靠地使用,因为在 Servlet API 中,请求参数 访问会导致请求正文被解析,并且无法再次读取。

您可以使用@RequestBody结合使用jakarta.validation.Valid或 Spring 的@Validated注释,这两者都会导致应用标准 Bean 验证。 默认情况下,验证错误会导致MethodArgumentNotValidException,转动 转化为 400 (BAD_REQUEST) 响应。或者,您可以在本地处理验证错误 在控制器内通过ErrorsBindingResult论点 如以下示例所示:spring-doc.cadn.net.cn

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

如果方法验证适用,因为其他参数具有@Constraint附注 然后HandlerMethodValidationException而是被提高。有关更多详细信息,请参阅 验证部分。spring-doc.cadn.net.cn