使用postman傳遞list集合后臺springmvc接收
postman傳遞list集合后臺springmvc接收
在做項(xiàng)目的時候我們可能會遇見一些場景需要前端給后端傳遞某個實(shí)體類的集合,這個時候后端的接口寫完了,需要進(jìn)行接口的測試,這里我使用的是postman進(jìn)行接口測試,下面寫下在用postman進(jìn)行接口測試傳遞list集合的經(jīng)驗(yàn)。歡迎指正
postman 設(shè)置
postman的安裝過程這里就不介紹了,直奔主題吧
首先確定你的請求方式是什么,填寫你的url路徑
當(dāng)你的url和請求設(shè)定好之后,就需要我們?nèi)ヌ顚憀ist集合的內(nèi)容了,整體是json串格式的,注意選擇body中的raw, 后面選擇JSON(application/json),當(dāng)這些內(nèi)容都選擇好之后,確定一下Headers中是否已經(jīng)配置好Cookie,如果上面準(zhǔn)備就緒那么你postman這塊的配置就已經(jīng)設(shè)置好了
springmvc配置
錯誤寫法1
@PostMapping("saveActRuleBatch") public ResultMsg saveActRuleBatch(List<ActRule> actRule) { LOGGER.info("============add.activity.rule.batch param:{}===========", actRule); return service.saveActRuleBatch(actRule); }
錯誤寫法2
@PostMapping("saveActRuleBatch") public ResultMsg saveActRuleBatch(@RequestBody List<ActRule> actRule) { LOGGER.info("============add.activity.rule.batch param:{}===========", actRule); return service.saveActRuleBatch(actRule); }
正確寫法1
@PostMapping("getList") public ResultMsg getList(@RequestBody List<String> names) { System.out.println(names); return null; }
正確寫法2
@PostMapping("saveActRuleBatch") public ResultMsg saveActRuleBatch(@RequestBody ActivityModel model) { LOGGER.info("============add.activity.rule.batch param:{}===========", model.getActRule()); return service.saveActRuleBatch(model.getActRule()); }
ActivityModel實(shí)體
/** * @author : lqf * @Description : * @date : Create in 10:10 2018/11/15 */ @Data @Builder @AllArgsConstructor @NoArgsConstructor public class ActivityModel { private List<ActRule> actRule; private List<ActRewardRule> actRewardRules; }
ActRule實(shí)體
package com.fy.crm.server.bean.entity.newActivity; public class ActRule { private Integer id; ......................... 正常的實(shí)體類就不寫了 }
錯誤寫法1解析 :
首先Spring MVC在解析集合請求參數(shù)時不會自動的轉(zhuǎn)換成JSON數(shù)據(jù)再解析成相應(yīng)的集合,所以在接受集合信息時需要通過注解@RequestBody進(jìn)行解析
正確寫法1解析 :
正確寫法1我們這里要注意一下,我們通過 @RequestBody進(jìn)行了json解析也能正常使用,但是這里有個限制是集合的泛型必須是基本數(shù)據(jù)類型
錯誤寫法2解析 :
這里我們可能會發(fā)現(xiàn)我們的錯誤寫法2和正確寫法1沒有什么區(qū)別吧,這里最主要的區(qū)別就是他們的泛型一個是基本數(shù)據(jù)類型,一個是封裝好的實(shí)體類。對于這種泛型是封裝好的實(shí)體對象來說正確寫法1是不適用的。
正確寫法2解析 :
這里首先我們需要封裝一個list集合實(shí)體類提供set,get方法,在controller接受參數(shù)的時候我們要通過@RequestBody和封裝好的實(shí)體類來進(jìn)行接受list<實(shí)體泛型> 集合
為什么需要這么定義接受參數(shù)呢
首先我們想一下springmvc在接受參數(shù)的時候我們經(jīng)常是寫一個接受參數(shù)對應(yīng)的實(shí)體對象,我們直接在方法中直接接受實(shí)體對象就能獲取對象中的所有屬性了,這是因?yàn)檫@個實(shí)體對象中提供了setter,getter方法。
那么問題來了,我們現(xiàn)在傳遞的list實(shí)體類型的setter,getter方法在哪里定義了?那么既然沒有定義我們怎么能找到這個list下面對應(yīng)的實(shí)體的getter和setter呢。
所以我們在使用springmvc接受list集合實(shí)體泛型的時候需要定義一個實(shí)體類,實(shí)體類中提供這個集合的setter和getter方法。
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot使用RestTemplate調(diào)用第三方接口的操作代碼
這篇文章主要介紹了Springboot使用RestTemplate調(diào)用第三方接口,我只演示了最常使用的請求方式get、post的簡單使用方法,當(dāng)然RestTemplate的功能還有很多,感興趣的朋友可以參考RestTemplate源碼2022-12-12springboot項(xiàng)目啟動的時候,運(yùn)行main方法報錯NoClassDefFoundError問題
這篇文章主要介紹了springboot項(xiàng)目啟動的時候,運(yùn)行main方法報錯NoClassDefFoundError問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01mybatis-plus動態(tài)數(shù)據(jù)源讀寫分離方式
在分布式項(xiàng)目開發(fā)中,動態(tài)數(shù)據(jù)源的配置與使用至關(guān)重要,通過創(chuàng)建DynamicDatasourceService,實(shí)現(xiàn)數(shù)據(jù)源的動態(tài)添加與調(diào)用,有效管理主從庫操作,減輕數(shù)據(jù)庫壓力,此外,通過配置類與@DS注解,實(shí)現(xiàn)了靈活的分庫查詢功能,為高效處理數(shù)據(jù)提供了強(qiáng)有力的支持2024-10-10SpringBoot使用Validator進(jìn)行參數(shù)校驗(yàn)實(shí)戰(zhàn)教程(自定義校驗(yàn),分組校驗(yàn))
這篇文章主要介紹了SpringBoot使用Validator進(jìn)行參數(shù)校驗(yàn)(自定義校驗(yàn),分組校驗(yàn))的實(shí)戰(zhàn)教程,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-07-07SpringBoot整合Elasticsearch7.2.0的實(shí)現(xiàn)方法
這篇文章主要介紹了SpringBoot整合Elasticsearch7.2.0的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08