Springboot 接口需要接收参数类型是数组问题
接口需要接收参数类型是数组
如题,一般我们普遍采用的协调方式:
多个参以“,”拼接传递即可
如:


那么除了这样,我们还能怎么协调呢?
其实对应get请求,springmvc内部是已经支持了这种以“,”逗号拼接的方式,也就是说,传参方式不变,但是我们后台接收的时候,可以不用那么繁琐以逗号切割,可以这样:


对post请求除了可以要求传参以“,”逗号拼接,我们接口接到参后再切割,还可以直接要求对方传数组,我们用实体类接收,
如:



也可以使用Map来接收 :


好了就到此,为什么要发这个文章,因为今天公司有伙伴在对数组参数的传递接收发问,我觉得有必要给一些伙伴普及一下这些普遍的处理协调参数为数组类型的接口方式。
springboot接口接收数组及多个参数问题
本例为个人经历,必然存在认知局限与不足,欢迎指正以及提供更好方法。
若接口中需要接受数组,那接口应该如何写呢?
一般而言我们会想到
@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;
}
解决~
上一篇:java实现肯德基收银系统
栏 目:JAVA代码
本文标题:Springboot 接口需要接收参数类型是数组问题
本文地址:http://www.codeinn.net/misctech/192998.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




