Swagger入参为List

今天遇到一个奇葩的需求,为了方便,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()

原文地址:https://www.cnblogs.com/coisini/p/9720865.html

时间: 2024-11-09 04:56:50

Swagger入参为List的相关文章

解决WebApi入参时多对象的问题

我们的项目是用WebApi提供数据服务,且WebPage跟APP中都有调用到. WebApi提供的接口一多,就发现一个问题,我们项目中有很多接口是接收POST(安全原因,我们采用的是https)请求的,而且入参基本也就是一两个参数.在开发的后期发现WebApi中有很多对象,多到已经快到了难以管理的地步了. 比如我们的WebApi如下: 对应的入参对象是: 很难想象如果再有别的Controller的话,Models中会有多少对象,而这些对象往往使用一次,或者在一个方法中使用了一下就不再用了. 这显

sizeof对函数入参使用不准

被调用函数内部,无法知道入参的字符数组的可用内存长度 所以函数字符指针作为入参时,一定要加一个 此指针指向的内存空间长度入参int nSize 错误的写法: 1 #include "stdafx.h" 2 #include <string.h> 3 #include <stdarg.h> 4 5 // 返回非0表达式验证不通过,不用调用子系统功能号 6 int getFilters(char * pszInput, char *pszFuncid) 7 { 8

shell 通过shift获得某位后的入参

有时shell的入参个数不定,想要获得第2位后的参数,作为新的入参调用其他脚本 通常这时候想到的方法是用遍历,例如下面的方法: for (( i=2;i<=$#;i++)) do echo $i done 更简便的方法:使用shift去移动参数,shift (n),默认n为1,移动的位数 shift会将n位前的入参舍弃掉,只会保留n+1以及他后面的入参 例如:shift 2,会舍弃第一位第二位入参,只保留第3位及以后的入参 执行 test.sh 1 2 3 4 5 6 7 8 9,test.sh

对称加密——对入参进行DES加密处理

体验更优排版请移步原文:http://vblog.win/blogs/programming/symmetric-encryption-des-js-java.html 对称加密是最快速.最简单的一种加密方式,加密和解密共用一个对称秘钥,因其高效性,被广泛应用在加密协议中.今天恰巧用到,在此总结一下. 我们项目中需要在前端js里对入参进行DES加密传入后台,后台java再进行解密,网上找了一个谷歌的DES加密js包crypto-js,点此下载 下载完成之后找到两个js文件引入项目工程中, 1 2

Jmeter 接口测试对上接口结果二次处理作为入参 Bean Shell Processor

1.线程组设置,HTTP COOKIE ,HTTP请求默认值设置,;注:Cookie主要传递登录状态 2.设置登录 http 请求 3.登录后,访问数据接口(并对数据返回值做后置处理) 4.添加二次处理相关接口 Http请求 5.对此接口进行预处理 使用Bean Shell Processor   注:本次写的代码所涉及的参数名,为3和4中的参数名,主要将3处的结果通过5处理传递给4处当做入参使用

SpringMVC确定目标方法POJO类型入参的过程

SpringMVC确定目标方法POJO类型入参的过程 访问方法 @RequestMapping("/pojoparam") public String POJOParam(User user){ return "success"; } 1,首先确定一个key值 ①如果目标方法的POJO类型的参数没有使用@ModelAttribute作为入参修饰,则key为POJO类名的第一个字母小写 例test(User user){}这样的方法key就是user ②如果使用了@M

springMVC中 request请求数据绑定到Controller入参 过程剖析

前言:Controller方法的参数类型可以是基本类型,也可以是封装后的普通Java类型.若这个普通Java类型没有声明任何注解,则意味着它的每一个属性都需要到Request中去查找对应的请求参数.众所周知,无论客户端传入的是什么类型的请求参数,最终都要以字节的形式传给服务端.而服务端通过Request的getParameter方法取到的参数也都是字符串形式的结果.所以,需要有一个把字符串形式的参数转换成服务端真正需要的类型的转换工具(基类:PropertyEditorSupport) 注:只有

Spring MVC POJO入参过程分析

SpringMVC确定目标方法POJO类型的入参过程 1.确认一个key: (1).若目标方法的POJO类型的参数没有使用@ModelAttribute作为修饰,则key为POJO类名第一个字母的小写 (2).若使用@ModelAttribute来修饰,则key为@ModelAttibute注解的value属性值. 1 @RequestMapping("/updateUser") 2 public String update(User user){ 这里没有使用@ModelAttrib

解决SpringMVC入参出现The request sent by the client was syntactically incorrect请求语法错误方法

使用SpringMVC出现The request sent by the client was syntactically incorrect.请求错误如下: 可以确定为提交的表单数据和目标方法的入参不一致所导致,表单数据可以多于目标入参个数,但目标参数没有被赋值,则会出现该异常,如下情况: 表单数据: 目标方法: Employee字段: 比对表单数据和Employee字段,可以发现,表单数据比Employee字段少,再加上目标方法的入参是一个 Employee对象,所以将会出现提交的数据不足,