swagger如何测试List<实体类>

发布于 2022-01-05 04:03:12 字数 1512 浏览 800 评论 2

最近的项目刚开始使用swagger。版本2.9.2。不知道怎么用swagger测试包含实体类的list数组。求各位大佬指教。

接口的相关注解如下:

//@ApiImplicitParam(name = "devices", value = "设备id(int)+楼层权限(五个值,String类型,拼接逗号)", paramType = "query", dataType = "List", example = "{'devices':[{'deviceId':'33293','floor':'5,0,0,0,0'},{'deviceId':'33291','floor':'3,0,0,0,0'}]}"),

public Map commonOpen(int userId,int userType,int validTime,@RequestParam(value="devices",required=true)@ApiParam(value="设备列表,包含设备id(33293)和楼层权限(5,0,0,0,0)")Listdevices) throws Exception {代码内容}

报错500:

[org.springframework.web.method.annotation.MethodArgumentConversionNotSupportedException: Failed to convert value of type 'java.lang.String' to required type 'java.util.List';

啊真是令人头大,虽然也不是非要用swagger测试,上面的接口是用来被其他的业务逻辑接口调用,数据也肯定是能够封装好传递进去的。只是实习小白很想了解多一些。

以下内容不重要,只是我尝试的一个流程:

原本想传递的数据是这样的:是一个List<Map<String,Object>>的格式:

后来尝试用swagger测试的时候发现会有问题,就将devices封装成deviceVO类,所以就变成List<deviceVO>这样的格式了。

 

【另一个接口传递list<Integer>类型:】

可以把@ApiImplicitParam去掉,接口传递list参数前添加@RequestParam(value="deviceIds",required=true),如果要相应的说明就添加@ApiParam(value="设备id列表")

就可以得到:

是能够访问成功哒

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冷弦 2022-01-08 04:19:51

谢谢大佬

平定天下 2022-01-08 04:16:02

使用POST,@RequestBody注解,参数使用list接收,在swagger-ui界面放入JSON Array数据就可以了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文