@RequestBody 的用法
时间: 2024-06-18 08:01:03 浏览: 50
`@RequestBody` 是Spring MVC框架中的一个注解,用于处理HTTP请求中的请求体数据。它通常与控制器方法一起使用,允许前端发送JSON、XML或者其他格式的数据到服务器端,这些数据会被自动映射到方法参数中,便于后续处理。
具体用法如下:
1. **标注位置**:`@RequestBody` 应该放在需要接收请求体参数的方法参数上,通常是实体对象(如Java bean)。
```java
@PostMapping("/api/resource")
public ResponseEntity<?> createResource(@RequestBody Resource resource) {
// ...
}
```
这里,`Resource` 类需要有一个无参构造器,以便Spring能实例化它。
2. **内容类型**:默认情况下,`@RequestBody` 会期望JSON数据,但你可以通过`consumes`属性指定其他内容类型,例如XML。
```java
@PostMapping("/api/resource", consumes = MediaType.APPLICATION_XML_VALUE)
public ResponseEntity<?> createResourceFromXml(@RequestBody Resource resource) {
// ...
}
```
3. **绑定错误**:如果请求体无法正确解析为指定的类型,Spring MVC会抛出`BindingResult`异常。可以捕获这个异常并提供有用的错误消息给客户端。
4. **验证**:使用JSR 303/JSR 349(Hibernate Validator)等库,可以对`@RequestBody` 参数进行验证,确保数据的有效性。
阅读全文