公司项目中庸Swagger配置web应用的RESTFUL接口的文档,配置方式如下:
1. 在POM添加Swagger依赖包
<!-- swagger-mvc -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.0</version>
</dependency>
<!-- swagger-mvc -->
2. 在Spring MVC配置文件添加
<bean class="springfox.documentation.swagger2.configuration.Swagger2DocumentationConfiguration" id="swagger2Config"/>
添加静态资源配置脚本
<mvc:resources location="classpath:/META-INF/resources/" mapping="swagger-ui.html"/>
<mvc:resources location="classpath:/META-INF/resources/webjars/" mapping="/webjars/**"/>
3. 重启web应用访问
http://{ip}:{port}/{project}/swagger-ui.html
结果出现了java.lang.IndexOutOfBoundsException: Index: 1
问题原因在我门项目中使用到了net.sf.JSONObject作为Api的响应参数
java.lang.IndexOutOfBoundsException: Index: 1
at java.util.Collections$EmptyList.get(Collections.java:4454)
at springfox.documentation.swagger2.mappers.ModelMapper.typeOfValue(ModelMapper.java:109)
at springfox.documentation.swagger2.mappers.ModelMapper.mapProperties(ModelMapper.java:91)
at springfox.documentation.swagger2.mappers.ModelMapper.mapModels(ModelMapper.java:65)
at springfox.documentation.swagger2.mappers.ModelMapper.modelsFromApiListings(ModelMapper.java:190)
at springfox.documentation.swagger2.mappers.ServiceModelToSwagger2MapperImpl.mapDocumentation(ServiceModelToSwagger2MapperImpl.java:50)
at springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(Swagger2Controller.java:76)
通过Swagger2的官网【issues】https://github.com/springfox/springfox/issues/1129发现出现类似的问题
然后搜索Swagger2最新的版本代码发现已经修复该问题so解决办法
<!-- swagger-mvc -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<!-- swagger-mvc -->