Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。简单来讲,Swagger是一个功能强大的接口管理工具,而且提供了多种编程语言的先后端分离解决方案。java
springfox-swagger 2.9.2 内置的swagger-models1.5.20 会引发Long类型格式转换异常,报错以下:spring
这段报错的意思是,在将空串"",转换为Long类型时出现异常。编程
项目中不少地方都使用了swagger注解,但对Long类型添加注解时未指定example值,好比:后端
@ApiModelProperty(value = "链码id") private Long id;
进入AbstractSerializableParameter类查看 getExample()方法api
复现异常:框架
public static void main(String[] args) { long l = Long.valueOf(""); System.out.println(l); }
报错以下:前后端分离
Exception in thread "main" java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Long.parseLong(Long.java:601) at java.lang.Long.valueOf(Long.java:803) at com.lianxin.werm.api.resource.room.RoomForm.main(RoomForm.java:124)
对Long类型上的参数或属性上使用swagger注解时,指定example的值为数值型,好比:编程语言
@ApiModelProperty(value = "链码id",example="1") private Long id;
将swagger中的swagger-models1.5.20 版本升到1.5.22工具
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> <!-- 排除自带的1.5.20版本--> <exclusions> <exclusion> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> </exclusion> </exclusions></dependency> <!-- 使用1.5.22--> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> <version>1.5.22</version> </dependency>
新版对这个问题进行了修复,查看getExample()
若是example="" ,直接返回spa