Springboot?接口需要接收參數(shù)類型是數(shù)組問(wèn)題
接口需要接收參數(shù)類型是數(shù)組
如題,一般我們普遍采用的協(xié)調(diào)方式:
多個(gè)參以“,”拼接傳遞即可
如:


那么除了這樣,我們還能怎么協(xié)調(diào)呢?
其實(shí)對(duì)應(yīng)get請(qǐng)求,springmvc內(nèi)部是已經(jīng)支持了這種以“,”逗號(hào)拼接的方式,也就是說(shuō),傳參方式不變,但是我們后臺(tái)接收的時(shí)候,可以不用那么繁瑣以逗號(hào)切割,可以這樣:


對(duì)post請(qǐng)求除了可以要求傳參以“,”逗號(hào)拼接,我們接口接到參后再切割,還可以直接要求對(duì)方傳數(shù)組,我們用實(shí)體類接收,
如:



也可以使用Map來(lái)接收 :


好了就到此,為什么要發(fā)這個(gè)文章,因?yàn)榻裉旃居谢锇樵趯?duì)數(shù)組參數(shù)的傳遞接收發(fā)問(wèn),我覺(jué)得有必要給一些伙伴普及一下這些普遍的處理協(xié)調(diào)參數(shù)為數(shù)組類型的接口方式。
springboot接口接收數(shù)組及多個(gè)參數(shù)問(wèn)題
本例為個(gè)人經(jīng)歷,必然存在認(rèn)知局限與不足,歡迎指正以及提供更好方法。
若接口中需要接受數(shù)組,那接口應(yīng)該如何寫(xiě)呢?
一般而言我們會(huì)想到
@PostMapping("/xxxx")
public String test(List list){
do sth;
}假設(shè)我們寫(xiě)的接口正確,寫(xiě)完接口我希望使用postman來(lái)測(cè)試一下

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

于是,修改接口
@PostMapping("/xxxx")
public String test(@RequestBody List list){
do sth;
}問(wèn)題解決~
但是往往我們寫(xiě)接口的時(shí)候需要接收的參數(shù)不止簡(jiǎn)單數(shù)組,有可能是一個(gè)非常復(fù)雜的對(duì)象。
這里我們將問(wèn)題假設(shè)為需要接收的參數(shù)為對(duì)象+數(shù)組,如下。
{
"abroad": {
"id":5,
"studentId":1,
"projectName":"哈佛訪學(xué)"
},
"params": ["id","studentId","projectName"]
}自然地,我們一般會(huì)這么想:
@PostMapping("/xxxx")
public String test(@RequestBody Abroad abroad,@RequestBody List<String> params){
do sth;
}但是這是錯(cuò)的??!
如果使用@RequestBody,只允許有一個(gè)參數(shù)。那希望上傳多個(gè)對(duì)象怎么辦呢?對(duì)!就是包個(gè)對(duì)象??!類似下面這樣:
@PostMapping("/xxxx")
public String test(@RequestBody ParaDTO paraDTO){
do sth;
}
class ParaDTO{
Abroad abroad;
List<String> params;
}解決~
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SpringBoot在接收參數(shù)的七種方式詳解
- SpringBoot Controller接收參數(shù)的幾種常用方式
- SpringBoot在Controller層接收參數(shù)的n種姿勢(shì)(超詳細(xì))
- SpringBoot開(kāi)發(fā)詳解之Controller接收參數(shù)及參數(shù)校驗(yàn)
- SpringBoot實(shí)現(xiàn)前后端、json數(shù)據(jù)交互以及Controller接收參數(shù)的幾種常用方式
- 詳解SpringBoot Controller接收參數(shù)的幾種常用方式
- SpringBoot中Get請(qǐng)求和POST請(qǐng)求接收參數(shù)示例詳解
相關(guān)文章
springboot實(shí)現(xiàn)配置本地訪問(wèn)端口及路徑
這篇文章主要介紹了springboot實(shí)現(xiàn)配置本地訪問(wèn)端口及路徑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
SpringBoot使用Validation進(jìn)行參數(shù)校驗(yàn)的示例詳解
在 SpringBoot項(xiàng)目開(kāi)發(fā)中,有一個(gè)觀點(diǎn)是不要相信前端傳入的參數(shù),因?yàn)槟悴恢烙脩羰窃趺床僮魑覀兘涌诘?,所以在后端也需要?duì)參數(shù)進(jìn)行校驗(yàn),這篇文章主要講講我們項(xiàng)目中最常使用的驗(yàn)證方案2023-05-05
SpringBoot引入swagger報(bào)錯(cuò)處理的解決方法
這篇文章主要給大家介紹SpringBoot引入swagger是會(huì)出現(xiàn)報(bào)錯(cuò)的處理解決方法,文中有詳細(xì)的解決過(guò)程,感興趣的小伙伴可以跟著小編一起來(lái)學(xué)習(xí)吧2023-06-06
Java中ArrayBlockingQueue和LinkedBlockingQueue
這篇文章主要介紹了Java中ArrayBlockingQueue和LinkedBlockingQueue,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-09-09
Java Swing實(shí)現(xiàn)餐廳點(diǎn)餐系統(tǒng)源碼(收藏版)
這篇文章主要介紹了Java Swing實(shí)現(xiàn)餐廳點(diǎn)餐系統(tǒng)源碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02

