1. 程式人生 > >Swagger入參為List

Swagger入參為List

入參 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