对于最新的稳定版本,请使用 Spring Framework 6.2.4!spring-doc.cadn.net.cn
@RequestBody
在 Reactive 堆栈中查看 equivalentspring-doc.cadn.net.cn
您可以使用@RequestBody注解来读取请求正文并将其反序列化为Object通过HttpMessageConverter.
以下示例使用@RequestBody论点:spring-doc.cadn.net.cn
Javaspring-doc.cadn.net.cn
Kotlinspring-doc.cadn.net.cn
@PostMapping("/accounts")
public void handle(@RequestBody Account account) {
// ...
}
@PostMapping("/accounts")
fun handle(@RequestBody account: Account) {
// ...
}
您可以使用 MVC Config 的 Message Converters 选项来
配置或自定义消息转换。spring-doc.cadn.net.cn
表单数据应使用@RequestParam,
不是@RequestBody它不能总是可靠地使用,因为在 Servlet API 中,request 参数
access 会导致请求正文被解析,并且无法再次读取。
您可以使用@RequestBody与jakarta.validation.Valid或 Spring 的@Validated注解,这两者都会导致应用 Standard Bean Validation。
默认情况下,验证错误会导致MethodArgumentNotValidException,该
转换为 400 (BAD_REQUEST) 响应。或者,您可以在本地处理验证错误
在控制器中,通过Errors或BindingResult论点
如下例所示:spring-doc.cadn.net.cn
Javaspring-doc.cadn.net.cn
Kotlinspring-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
Spring Framework
Servlet 堆栈上的 Web
Spring Web MVC
带注释的控制器
处理程序方法
@RequestBody
多部分
HttpEntity