文章目录
以下内容基于swagger2.9.2进行讲解
<!--swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
一、问题描述
swagger中用@ApiImplicitParam注解的时候,若dataType=Integer类型且required=true时,在swagger页面中执行方法报红且不能提交。
当为其他类型如String时没有问题
@ApiOperation(value = "测试2")
@ApiImplicitParams(
@ApiImplicitParam(name = "id",value = "主键id",required = true,dataType = "Integer",paramType = "query")//dataType = "Integer",web页面无法进入请求
)
@GetMapping("/test2")
public void test2(Integer id){
log.info("id"+id);
}
swagger页面报错如下:
当点击Execute后,报红不能提交
二、问题原因
猜测是因为dataType需要是私有类型,而不是包装类型。这个在1.5版本中有说明,不过没找到确切证据,有知道的也可以评论一下
https://docs.swagger.io/swagger-core/v1.5.X/apidocs/io/swagger/annotations/ApiImplicitParam.html#dataType()
三、解决方法
3.1、修改dataType=int
修改dataType=int且required=true时可提交通过
@ApiOperation(value = "测试2")
@ApiImplicitParams(
@ApiImplicitParam(name = "id",value = "主键id",required = true,dataType = "int",paramType = "query")
)
@GetMapping("/test2")
public void test2(Integer id){
log.info("id"+id);
}
3.2、修改dataType=Long
修改dataType=Long,且required=true时可提交通过
@ApiOperation(value = "测试2")
@ApiImplicitParams(
@ApiImplicitParam(name = "id",value = "主键id",required = true,dataType = "Long",paramType = "query")
)
@GetMapping("/test2")
public void test2(Integer id){
log.info("id"+id);
}
3.3、修改dataType类型为String类型
- 当dataType="String"类型时,required=true是没问题的
- 当dataType类型为Integer时,也可以直接删除dataType属性,这样默认就是String类型,此时required=true也是可以提交的
@ApiOperation(value = "测试2")
@ApiImplicitParams(
@ApiImplicitParam(name = "id",value = "主键id",required = true,dataType = "String",paramType = "query")
)
@GetMapping("/test2")
public void test2(String id){
log.info("id"+id);
}
3.4、当dataType类型为Integer时,删除required=true
当dataType类型为Integer时,若required不为true,也可提交通过
@ApiOperation(value = "测试2")
@ApiImplicitParams(
@ApiImplicitParam(name = "id",value = "主键id"dataType = "Integer",paramType = "query")
)
@GetMapping("/test2")
public void test2(Integer id){
log.info("id"+id);
}
标签:传参,test2,ApiImplicitParam,dataType,required,Integer,注解,true,id
From: https://blog.csdn.net/weixin_49114503/article/details/139391104