springboot接口接收数组及多个参数的问题及解决

 更新时间:2022年11月21日 11:14:05   作者:Levi_Tang  
这篇文章主要介绍了springboot接口接收数组及多个参数的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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;
}

解决~

springboot接收复杂集合参数,集合对象

springboot中,我们有这样一个场景,就是接受前端复杂的对象数组,或者多个数组。

这是我们可以用@RequestBody注解,来解析请求体中的数据。但是值得注意的是在GET请求是不能进行该种方式的操作,因为GET请求没有请求体。

发送的请求类型不能是GET请求,可以POST,PUT,DELETE等请求。

前端发送数据的时候,请求内容格式必须设置为contentType:‘application/json;charset=utf-8’,默认是``contentType:‘www-form-urlencoded’`

上传的数据必须使用JSON.stringify(…)处理

后端接受参数前需要加注解@RequestBody,且每一个请求的参数里面最多只能有一个该注解

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

相关文章

  • java使用freemarker模板生成html再转为pdf

    java使用freemarker模板生成html再转为pdf

    这篇文章主要为大家详细介绍了java如何使用freemarker模板生成html,再利用iText将生成的HTML转换为PDF文件,感兴趣的小伙伴可以参考下
    2025-04-04
  • 详解java中的四种代码块

    详解java中的四种代码块

    这篇文章主要介绍了详解java中的四种代码块,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • Java基于BIO实现文件上传功能

    Java基于BIO实现文件上传功能

    这篇文章主要为大家详细介绍了Java基于BIO实现文件上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • SpringBoot热部署和整合Mybatis的过程

    SpringBoot热部署和整合Mybatis的过程

    热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用,本文给大家详细介绍SpringBoot热部署和整合Mybatis的过程,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • springboot2.x使用Jsoup防XSS攻击的实现

    springboot2.x使用Jsoup防XSS攻击的实现

    这篇文章主要介绍了springboot2.x使用Jsoup防XSS攻击的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Spring MVC 中拦截器的使用示例详解"拦截器基本配置"和 "拦截器高级配置"

    Spring MVC 中拦截器的使用示例详解"拦截器基本配置"和 &q

    Spring MVC 的拦截器作用是在请求到达控制器之前或之后进行拦截,可以对请求和响应进行一些特定的处理,这篇文章主要介绍了Spring MVC 中的拦截器的使用“拦截器基本配置” 和 “拦截器高级配置”,需要的朋友可以参考下
    2024-07-07
  • 详解如何实现OpenAPI开发动态处理接口的返回数据

    详解如何实现OpenAPI开发动态处理接口的返回数据

    这篇文章主要为大家介绍了OpenAPI开发动态处理接口的返回数据如何实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Java基于余弦方法实现的计算相似度算法示例

    Java基于余弦方法实现的计算相似度算法示例

    这篇文章主要介绍了Java基于余弦方法实现的计算相似度算法,简单说明了余弦相似性的概念、原理并结合实例形式分析了java实现余弦相似性算法的相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • Java线程中卖火车票问题的深入讲解

    Java线程中卖火车票问题的深入讲解

    这篇文章主要给大家介绍了关于Java线程中卖火车票问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 详解MyBatis多数据源配置(读写分离)

    详解MyBatis多数据源配置(读写分离)

    这篇文章主要介绍了详解MyBatis多数据源配置(读写分离),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01

最新评论