1. 程式人生 > 程式設計 >Springboot 介面需要接收引數型別是陣列問題

Springboot 介面需要接收引數型別是陣列問題

目錄
  • 介面需要接收引數型別是陣列
    • 多個參以“,”拼接傳遞即可
    • 那麼除了這樣,我們還能怎麼協調呢?
  • springboot介面接收陣列及多個引數問題
    • 若介面中需要接受陣列,那介面應該如何寫呢?
    • 在body中用on格式傳引數不就好了嗎!
    • 問題解決~

介面需要接收引數型別是陣列

如題,一般我們普遍採用的協調方式:

多個參以“,”拼接傳遞即可

如:

Springboot介面需要接收引數型別是陣列問題

Springboot介面需要接收引數型別是陣列問題

那麼除了這樣,我們還能怎麼協調呢?

其實對應get請求,springmvc內部是已經支援了這種以“,http://www.cppcns.com”逗號拼接的方式,也就是說,傳參方式不變,但是我們後臺接收的時候,可以不用那麼繁瑣以逗號切割,可以這樣:

Springboot介面需要接收引數型別是陣列問題

Springboot介面需要接收引數型別是陣列問題

post請求除了可以要求傳參以“,”逗號拼接,我們介面接到參後再切割,還可以直接要求對方傳陣列,我們用實體類接收

如:

Springboot介面需要接收引數型別是陣列問題

Springboot介面需要接收引數型別是陣列問題

Springboot介面需要接收引數型別是陣列問題

也可以使用Map來接收 :

Springboot介面需要接收引數型別是陣列問題

Springboot介面需要接收引數型別是陣列問題

好了就到此,為什麼要發這個文章,因為今天公司有夥伴在對陣列引數的傳遞接收發問,我覺得有必要給一些夥伴普及一下這些普遍的處理協調引數為陣列型別的介面方式。

springboot介面接收陣列及多個引數問題

本例為個人經歷,必然存在認知侷限與不足,歡迎指正以及提供更好方法。

若介面中需要接受陣列,那介面應該如何寫呢?

一般而言我們會想到

@PostMapping("/xxxx")
public String test(List list){
    do sth;
}

假設我們寫的介面正確,寫完介面我希望使用postman來測試一下

Springboot介面需要接收引數型別是陣列問題

params中似乎無法傳陣列呀

在body中用jsohttp://www.cppcns.comn格式傳引數不就好了嗎!

Springboot介面需要接收引數型別是陣列問題

於是,修改介面

@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;
}http://www.cppcns.com 
class ParaDTO{
    Abroad abroad;
    List<String> params;
www.cppcns.com}

解決~

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。