下面我将详细讲解“解读SpringBoot接收List
1. 问题背景
在SpringBoot中,如果需要接收一个POST请求参数为List类型的Bean,则需要注意以下问题:
– 对象中需要有一个空参的构造器,否则使用@RequestBody
注解时会报错
– 接收参数需要使用@RequestBody
注解
– 发送POST请求时需要设置Content-Type为application/json;charset=UTF-8
接下来,我们通过两个示例具体解释这些问题。
2. 示例说明
2.1 接收参数为List类型的Bean
假设我们需要接收一个POST请求参数为List类型的Bean,其中Bean的定义如下:
public class User {
private Integer id;
private String name;
// 省略getter/setter方法
}
则定义接口如下:
@PostMapping("/user/save")
public void saveUserList(@RequestBody List<User> userList) {
// do something
}
注意,在接口方法上需要添加@RequestBody
注解,表明参数是从请求体中获取的。同时,用户类中也需要有一个空参构造器。
发送POST请求时,我们需要设置Content-Type为application/json;charset=UTF-8,例如使用curl命令发送请求:
curl -H 'Content-Type: application/json;charset=UTF-8' -d '
[
{"id":1, "name":"张三"},
{"id":2, "name":"李四"}
]' 'http://localhost:8080/user/save'
其中-d
参数表示请求体的数据。
2.2 接收参数为一个List和一个对象
假设我们需要接收一个POST请求参数为一个List和一个对象,对象定义如下:
public class Order {
private Integer id;
private List<String> items;
// 省略getter/setter方法
}
则定义接口如下:
@PostMapping("/order/save")
public void saveOrder(@RequestBody List<String> codeList, @RequestBody Order order) {
// do something
}
需要注意的是,在一个接口方法中使用多个@RequestBody
注解是不允许的。这里我们通过两个参数来接收数据。
发送POST请求时,我们同样需要设置Content-Type为application/json;charset=UTF-8,例如使用curl命令发送请求:
curl -H 'Content-Type: application/json;charset=UTF-8' -d '
["A123", "B345"]
{"id":1, "items":["item1", "item2"]}
' 'http://localhost:8080/order/save'
其中-d
参数表示请求体的数据。
3. 总结
以上就是“解读SpringBoot接收List@RequestBody
注解,并且发送POST请求时需要设置Content-Type为application/json;charset=UTF-8。