Springboot 接口需要接收参数类型是数组问题

 更新时间:2022年01月25日 14:41:13   作者:小目标青年  
这篇文章主要介绍了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;
}

解决~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Jmeter如何添加循环控制器

    Jmeter如何添加循环控制器

    这篇文章主要介绍了Jmeter如何添加循环控制器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • springboot实现配置本地访问端口及路径

    springboot实现配置本地访问端口及路径

    这篇文章主要介绍了springboot实现配置本地访问端口及路径,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • java 文件和byte互转的实例

    java 文件和byte互转的实例

    下面小编就为大家分享一篇java 文件和byte互转的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • Java实现雪花算法的工具类介绍

    Java实现雪花算法的工具类介绍

    雪花 (SnowFlake )算法是一种分布式唯一ID生成算法,可以生成全局唯一的ID标识符,就像自然界中雪花一般没有相同的雪花,本文和大家分享了一个雪花算法工具类,需要的可以收藏一下
    2023-05-05
  • SpringBoot使用Validation进行参数校验的示例详解

    SpringBoot使用Validation进行参数校验的示例详解

    在 SpringBoot项目开发中,有一个观点是不要相信前端传入的参数,因为你不知道用户是怎么操作我们接口的,所以在后端也需要对参数进行校验,这篇文章主要讲讲我们项目中最常使用的验证方案
    2023-05-05
  • SpringBoot引入swagger报错处理的解决方法

    SpringBoot引入swagger报错处理的解决方法

    这篇文章主要给大家介绍SpringBoot引入swagger是会出现报错的处理解决方法,文中有详细的解决过程,感兴趣的小伙伴可以跟着小编一起来学习吧
    2023-06-06
  • mybatis 新增返回id的实现

    mybatis 新增返回id的实现

    Mybatis插入数据时,可以通过两种方式返回生成的ID,两种方式都需要在实体类中提供userId的getter和setter方法,本文就详细的介绍一下这两种方法,感兴趣的可以了解一下
    2024-09-09
  • Netty分布式源码分析监听读事件

    Netty分布式源码分析监听读事件

    这篇文章主要介绍了Netty分布式监听读事件方法的代码跟踪解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • Java中ArrayBlockingQueue和LinkedBlockingQueue

    Java中ArrayBlockingQueue和LinkedBlockingQueue

    这篇文章主要介绍了Java中ArrayBlockingQueue和LinkedBlockingQueue,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-09-09
  • Java Swing实现餐厅点餐系统源码(收藏版)

    Java Swing实现餐厅点餐系统源码(收藏版)

    这篇文章主要介绍了Java Swing实现餐厅点餐系统源码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02

最新评论