Swagger入參為List
阿新 • • 發佈:2018-09-28
入參 AMM style brush 測試 map 今天 數據 i++ 今天遇到一個奇葩的需求,為了方便,service的一個接口入參是List<Map>
repayMoney(List<Map<String,Object>)那,我為了在controller調用service,入參類型得一致呀, 那麽問題來了,controller入參也得是List吧,或者是其他形式的數據,轉換為List<Map> 翻遍了整個項目,沒看到之前有人swagger的controller裏入參是List的,而且查了一下, 用@ApiImplicitParams註解的話,入參只能是String或者Integer,啊,這可怎麽辦,類似於這樣 關註點在入參為List,這個測試寫的不完善,大家只要關註入參就可以了
@ApiOperation(value = "測試") @RequestMapping(value = "/sanbiaoRepaymentAmount",method = RequestMethod.POST) @ApiImplicitParams({@ApiImplicitParam(name = "idCard", dataType = "String", value = "身份證號", paramType = "query", required = true), @ApiImplicitParam(name = "userNo", dataType = "Integer", value = "編號", paramType = "query", required = true), @ApiImplicitParam(name = "onePeriodAmount", dataType = "String", value = "金額", paramType = "query", required = true)}) @ResponseBody public Result sanbiaoRepaymentAmount(@RequestParam(value = "idCard", required = true) String idCard, @RequestParam(value = "userNo", required = true) Integer userNo, @RequestParam(value = "onePeriodAmount", required = true) String onePeriodAmount) { Result result = new ResultSupport(); List<Map<String,Object>> repayList = new ArrayList<Map<String,Object>>(); Map paramMap = new HashMap(); paramMap.put("idCard",idCard); paramMap.put("userNo",userNo); paramMap.put("onePeriodAmount",onePeriodAmount); repayList.add(paramMap); userService.repayMoney(repayList); return result; }
好吧,查了一下,好像去掉ApiImplicitParams,就可以傳list, 於是 我做了如下修改
@ApiOperation(value = "測試") @RequestMapping(value = "/sanbiaoRepaymentAmount",method = RequestMethod.POST) @ResponseBody public Result sanbiaoRepaymentAmount(@RequestParam(value = "idCardList", required = true) List<String> idCardList, @RequestParam(value = "userNoList", required = true) List<Integer> userNoList, @RequestParam(value = "onePeriodAmountList", required = true) List<String> onePeriodAmountList) { Result result = new ResultSupport(); List<Map<String,Object>> repayList = new ArrayList<Map<String,Object>>(); Map paramMap = new HashMap(); for(int i=0; i<idCardList.size(); i++){ //因為這裏十分確定,三個入參list的長度是一致的,所以,在這裏,把三個List對應的下標參數放在map裏 paramMap.put("idCard",userNoList.get(i)); paramMap.put("userNo",onePeriodAmountList.get(i)); paramMap.put("onePeriodAmount",onePeriodAmountList.get(i)); repayList.add(paramMap); } System.out.println("haha"); System.out.println(repayList); System.out.println(repayList.getClass()); userService.repayMoney(repayList); return result; }
開始測試--Swagger入參是這樣得,看吧,DataType 是Array,數組唄
逗號分隔參數,就可以咯
順利經過測試,能走到repayMoney()
Swagger入參為List