在Swagger接口管理工具中访问一个带有路径参数的URL时,出现了String转Long类型异常。
MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'int';
但我在浏览器和ApiPost工具中访问这个接口是正常的。
这个异常是发生在我使用ApiImplicitParam给路径参数配置接口描述后,
所以针对ApiImplicitParam查找资料,发现ApiImplicitParam注解会让Swagger在请求时再次封装被描述的参数到请求body中,这样导致id的值有两个(请求中,id=1,1,有多个值),所以不能转为Long类型。后面就换成了@ApiParam的注解就行了。
@PathVariable @ApiParam(name = "id", value = "用户ID", required = true) Long id