问题描述:
当用swagger测试一个需要传入(Integer数据类型)参数的接口时,一直是显示红框状态,不能被execute(执行),没有任何错误提示!
接口源代码:
@ApiOperation("获取光照强度数据")
@GetMapping("/getLightIntensityData")
@ApiImplicitParam( name ="count",value = "条目数",dataType = "Integer",required = true)
public Result getLightIntensityDataByCount(Integer count){
if(ObjectUtils.isEmpty(count)){
// 输入为空值,查询全部结果
List<LightIntensity> lightIntensity = userMapper.getLightIntensity();
return Result.success(lightIntensity);
}else if(count<=0){
// 输入值<=0,输入不合法
return Result.fail("不合法的输入,请重新输入!");
}else {
// count>=1,限制查询最新插入的count条数据
List<LightIntensity> lightIntensities = userMapper.getLightIntensityByCount(count);
return Result.success(lightIntensities);
}
}
swagger调试结果:
现象:
当传参类型设置为Integer类型,还有@ApiImplicitParam注解中dataType = "Integer"时,并且required设置为 true时限制必传参数。swagger测试文档中为参数传值时,显示红框状态,不能被execute(执行)
解决方法:
(1)去掉@ApiImplicitParam注解中dataType属性,即可执行成功,测试如下:
原因:
参数类型显示的是string类型,这说明当不指定dataType的时候,默认是传入String类型的参数。
(2)将dataType属性值由原先的"Integer"改为"Int",也可执行成功,测试如下:
由图可看出,接口的参数类型显示是对的(integer)
原因:参数类型是Integer,那对应的dataType是Int
(3)将接口参数类型和dataType属性值均改为Int类型,或者均改为Integer类型,然后