关于swagger注解@ApiParam 和 @ApiImplicitParam 的问题

时间:2024-10-12 20:04:19

本次记录源于遇到的以下问题:

在这里插入图片描述

如图所示,在接口的controller层我需要设置传入的参数dataType:
1、直接在括号中设置参数;
2、在方法的上面加上ApiImplicitParam注解,通过name属性设置参数的名称,通过paramType设置参数的请求类型;
两种方式呈现在swagger前端页面的时候请求类型其实是query
在这里插入图片描述
但是此时我想给括号中的参数设置一些参数说明,所以加上了@ApiParam注解,此时问题出现了:

@ApiParam注解加上之后参数的请求类型变成了Body类型,这让我有点蒙

在这里插入图片描述

请求类型变成了Body类型
尽管这并不影响我的接口,但是总归看上去不尽如人意,所以我想有没有什么注解加上之后既可以添加参数说明又不改变参数的请求类型,这时候我注意到了@ApiImplicitParam注解:
假设我把该注解的name属性值设置成和括号内参数一样的名字效果会是怎么样呢?
假设两个注解同时使用,且name值相同,但是value值不同,哪个注解有效哪个注解无效呢?

1、结果就是方法上的注解可以和参数合二为一,且可以正常的添加参数说明并且不会改变参数的请求类型;
2、@ApiParam 和 @ApiImplicitParam注解同时使用,且属性name值都与参数名称一致是,@ApiImplicitParam有效

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
追加一下:又发现了可以解决此问题的方法:可以在使用@ApiParam的基础上添加一个 @RequestParam 注解,这样该参数的请求类型依然是query。
在这里插入图片描述