springboot接口參數(shù)為List的問題
簡單接口參數(shù)
springboot接口訪問,如果是走h(yuǎn)ttp請(qǐng)求,那么參數(shù)會(huì)默認(rèn)轉(zhuǎn)換成鍵值對(duì)格式,或者是json字符串形式的。
今天就遇到一個(gè)場景,我需要一個(gè)list結(jié)構(gòu)的參數(shù),list里面又是對(duì)象,那我們?cè)撛趺磦鲄⒛兀?/p>
我們不能再瀏覽器上直接拼接參數(shù)發(fā)請(qǐng)求了,例如:
這樣的格式是不被允許的,請(qǐng)求會(huì)報(bào)錯(cuò)。
那么我們轉(zhuǎn)換思路,既然是json格式的參數(shù),那我們就傳json格式
設(shè)置headers
Content-type 的值為application/json
組織傳值參數(shù)list數(shù)據(jù)
在body中,傳值參數(shù),list 使用[]括起來
代碼實(shí)現(xiàn)請(qǐng)求
public void queryLiveCourseInfoTest(){ JSONArray jsonArray = new JSONArray(); JSONObject json1 = new JSONObject(); json1.put("dn","123"); json1.put("bossCode","34455"); jsonArray.add(json1); JSONObject json2 = new JSONObject(); json2.put("dn","234"); json2.put("bossCode","66666"); jsonArray.add(json2); String arr = jsonArray.toJSONString(); System.out.println("請(qǐng)求參數(shù):"+arr); String url = nativUrl+""; try { HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); headers.setContentType(type); HttpEntity<ElecMeterDataApi> entity = new HttpEntity<ElecMeterDataApi>(arr,headers); String res = restTemplate.postForObject(url, entity, String.class); log.info("結(jié)果:"+res); } catch (RestClientException e) { log.error("請(qǐng)求異常" + e.getMessage()); } }
controller層設(shè)置兩個(gè)注解@ResponseBody 和@RequestBody
@ResponseBody 沒有該注解的時(shí)候,會(huì)發(fā)生postman 請(qǐng)求找不到error 404;
@RequestBody 沒有該注解的時(shí)候,會(huì)發(fā)生參數(shù)值傳輸不過去;
這樣我們就可以實(shí)現(xiàn)通過接口直接傳遞list對(duì)象數(shù)據(jù)。
其中,list中的對(duì)象,我們?cè)趥鲄?shù)時(shí)只要組織的json格式的數(shù)據(jù)中,包含該對(duì)象的屬性以及對(duì)應(yīng)值,接口參數(shù)的對(duì)象就可以接收到該屬性值。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Elasticsearch倒排索引詳解及實(shí)際應(yīng)用中的優(yōu)化
Elasticsearch(ES)使用倒排索引來加速文本的搜索速度,倒排索引之所以高效,主要是因?yàn)樗淖兞藬?shù)據(jù)的組織方式,使得查詢操作可以快速完成,這篇文章主要給大家介紹了關(guān)于Elasticsearch倒排索引詳解及實(shí)際應(yīng)用中優(yōu)化的相關(guān)資料,需要的朋友可以參考下2024-08-08Java集合ArrayList、LinkedList、HashMap、HashSet最大容量
在開發(fā)中我們使用比較多的集合就是List、Set和Map了,并且我們也知道大部分用的基本上都是ArrayList、LinkedList、HashMap、HashSet或者TreeSet這幾個(gè)集合,你知道他們的最大容量,感興趣的可以了解一下2023-12-12Java面向?qū)ο髮?shí)現(xiàn)汽車租賃系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java面向?qū)ο髮?shí)現(xiàn)汽車租賃系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02使用Java實(shí)現(xiàn)一個(gè)能保留計(jì)算過程的計(jì)算器
計(jì)算器是我們?nèi)粘I钪谐S玫墓ぞ咧?它能夠進(jìn)行基本的數(shù)學(xué)運(yùn)算,如加法、減法、乘法和除法,而在設(shè)計(jì)一個(gè)計(jì)算器時(shí),我們可以通過使用Java編程語言來實(shí)現(xiàn)一個(gè)簡單的控制臺(tái)計(jì)算器,并且讓它能夠保留計(jì)算過程,文中有詳細(xì)的代碼示例,需要的朋友可以參考下2023-11-11