本例为个人经历,必然存在认知局限与不足,欢迎指正以及提供更好方法。
若接口中需要接受数组,那么接口应该如何写呢?
一般而言我们会想到
@PostMapping("/xxxx")
public String test(List list){
do sth;
}
假设我们写的接口正确,写完接口我希望使用postman来测试一下
params中似乎无法传数组呀
诶?在body中用json格式传参数不就好了吗!
于是,修改接口
@PostMapping("/xxxx")
public String test(@RequestBody List list){
do sth;
}
问题解决~
但是往往我们写接口的时候需要接收的参数不止简单数组,有可能是一个非常复杂的对象。
这里我们将问题假设为需要接收的参数为对象+数组,如下。
{
"abroad": {
"id":5,
"studentId":1,
"projectName":"哈佛访学"
},
"params": ["id","studentId","projectName"]
}
自然地,我们一般会这么想:
@PostMapping("/xxxx")
public String test(@RequestBody Abroad abroad,@RequestBody List<String> params){
do sth;
}
但是这是错的!!
如果使用@RequestBody,只允许有一个参数。那希望上传多个对象怎么办呢?对!就是包个对象!!类似下面这样:
@PostMapping("/xxxx")
public String test(@RequestBody ParaDTO paraDTO){
do sth;
}
class ParaDTO{
Abroad abroad;
List<String> params;
}
解决~