springboot接口接收數(shù)組及多個(gè)參數(shù)的問題及解決
springboot接口接收數(shù)組及多個(gè)參數(shù)問題
本例為個(gè)人經(jīng)歷,必然存在認(rèn)知局限與不足,歡迎指正以及提供更好方法。
若接口中需要接受數(shù)組,那么接口應(yīng)該如何寫呢?
一般而言我們會想到
@PostMapping("/xxxx")
public String test(List list){
do sth;
}假設(shè)我們寫的接口正確,寫完接口我希望使用postman來測試一下

params中似乎無法傳數(shù)組呀
誒?在body中用json格式傳參數(shù)不就好了嗎!

于是,修改接口
@PostMapping("/xxxx")
public String test(@RequestBody List list){
do sth;
}問題解決~
但是往往我們寫接口的時(shí)候需要接收的參數(shù)不止簡單數(shù)組,有可能是一個(gè)非常復(fù)雜的對象。
這里我們將問題假設(shè)為需要接收的參數(shù)為對象+數(shù)組,如下。
{
"abroad": {
"id":5,
"studentId":1,
"projectName":"哈佛訪學(xué)"
},
"params": ["id","studentId","projectName"]
}自然地,我們一般會這么想:
@PostMapping("/xxxx")
public String test(@RequestBody Abroad abroad,@RequestBody List<String> params){
do sth;
}但是這是錯(cuò)的??!
如果使用@RequestBody,只允許有一個(gè)參數(shù)。那希望上傳多個(gè)對象怎么辦呢?對!就是包個(gè)對象??!類似下面這樣:
@PostMapping("/xxxx")
public String test(@RequestBody ParaDTO paraDTO){
do sth;
}
class ParaDTO{
Abroad abroad;
List<String> params;
}解決~
springboot接收復(fù)雜集合參數(shù),集合對象
springboot中,我們有這樣一個(gè)場景,就是接受前端復(fù)雜的對象數(shù)組,或者多個(gè)數(shù)組。
這是我們可以用@RequestBody注解,來解析請求體中的數(shù)據(jù)。但是值得注意的是在GET請求是不能進(jìn)行該種方式的操作,因?yàn)镚ET請求沒有請求體。
發(fā)送的請求類型不能是GET請求,可以POST,PUT,DELETE等請求。
前端發(fā)送數(shù)據(jù)的時(shí)候,請求內(nèi)容格式必須設(shè)置為contentType:‘application/json;charset=utf-8’,默認(rèn)是``contentType:‘www-form-urlencoded’`
上傳的數(shù)據(jù)必須使用JSON.stringify(…)處理
后端接受參數(shù)前需要加注解@RequestBody,且每一個(gè)請求的參數(shù)里面最多只能有一個(gè)該注解
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java使用freemarker模板生成html再轉(zhuǎn)為pdf
這篇文章主要為大家詳細(xì)介紹了java如何使用freemarker模板生成html,再利用iText將生成的HTML轉(zhuǎn)換為PDF文件,感興趣的小伙伴可以參考下2025-04-04
springboot2.x使用Jsoup防XSS攻擊的實(shí)現(xiàn)
這篇文章主要介紹了springboot2.x使用Jsoup防XSS攻擊的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Spring MVC 中攔截器的使用示例詳解"攔截器基本配置"和 &q
Spring MVC 的攔截器作用是在請求到達(dá)控制器之前或之后進(jìn)行攔截,可以對請求和響應(yīng)進(jìn)行一些特定的處理,這篇文章主要介紹了Spring MVC 中的攔截器的使用“攔截器基本配置” 和 “攔截器高級配置”,需要的朋友可以參考下2024-07-07
詳解如何實(shí)現(xiàn)OpenAPI開發(fā)動(dòng)態(tài)處理接口的返回?cái)?shù)據(jù)
這篇文章主要為大家介紹了OpenAPI開發(fā)動(dòng)態(tài)處理接口的返回?cái)?shù)據(jù)如何實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Java基于余弦方法實(shí)現(xiàn)的計(jì)算相似度算法示例
這篇文章主要介紹了Java基于余弦方法實(shí)現(xiàn)的計(jì)算相似度算法,簡單說明了余弦相似性的概念、原理并結(jié)合實(shí)例形式分析了java實(shí)現(xiàn)余弦相似性算法的相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
詳解MyBatis多數(shù)據(jù)源配置(讀寫分離)
這篇文章主要介紹了詳解MyBatis多數(shù)據(jù)源配置(讀寫分離),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01

