springboot接口接收數(shù)組及多個參數(shù)的問題及解決
springboot接口接收數(shù)組及多個參數(shù)問題
本例為個人經(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ù)組,有可能是一個非常復(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; }
但是這是錯的??!
如果使用@RequestBody,只允許有一個參數(shù)。那希望上傳多個對象怎么辦呢?對!就是包個對象?。☆愃葡旅孢@樣:
@PostMapping("/xxxx") public String test(@RequestBody ParaDTO paraDTO){ do sth; } class ParaDTO{ Abroad abroad; List<String> params; }
解決~
springboot接收復(fù)雜集合參數(shù),集合對象
springboot中,我們有這樣一個場景,就是接受前端復(fù)雜的對象數(shù)組,或者多個數(shù)組。
這是我們可以用@RequestBody注解,來解析請求體中的數(shù)據(jù)。但是值得注意的是在GET請求是不能進(jìn)行該種方式的操作,因為GET請求沒有請求體。
發(fā)送的請求類型不能是GET請求,可以POST,PUT,DELETE等請求。
前端發(fā)送數(shù)據(jù)的時候,請求內(nèi)容格式必須設(shè)置為contentType:‘application/json;charset=utf-8’,默認(rèn)是``contentType:‘www-form-urlencoded’`
上傳的數(shù)據(jù)必須使用JSON.stringify(…)處理
后端接受參數(shù)前需要加注解@RequestBody,且每一個請求的參數(shù)里面最多只能有一個該注解
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java反射機(jī)制詳解_動力節(jié)點Java學(xué)院整理
Java 反射機(jī)制。通俗來講呢,就是在運(yùn)行狀態(tài)中,我們可以根據(jù)“類的部分已經(jīng)的信息”來還原“類的全部的信息”。這篇文章給大家詳細(xì)介紹了java反射機(jī)制的知識,感興趣的朋友一起看看吧2017-06-06