spring boot 2.3 整合 swagger 3 _ 解决 swagger basePath 或者 context-path 重复问题
spring boot version 2.3
<!-- -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-spring-webmvc</artifactId>
<version>3.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
</exclusion>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.21</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.21</version>
</dependency>
<!--swagger 3 暂时为发布到中央仓库,需要引入 swagger的中央库 -->
<repositories>
<repository>
<id>jcenter-snapshots</id>
<name>jcenter</name>
<url>http://oss.jfrog.org/artifactory/oss-snapshot-local/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
其他的swagger 配置 同 2 没啥区别
注意
- 如果你的项目配置了 server.servlet.context-path 这时你会发现 通过swagger 测试接口时,url上会有两层 context-path 导致接口访问失败
解决办法
@Value("${server.servlet.context-path}") private String servletContextPath; /** * 重写 PathProvider ,解决 context-path 重复问题 * @return */ @Bean public PathProvider pathProvider() { return new DefaultPathProvider() { @Override public String getOperationPath(String operationPath) { operationPath = operationPath.replaceFirst(servletContextPath, "/"); UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromPath("/"); return Paths.removeAdjacentForwardSlashes(uriComponentsBuilder.path(operationPath).build().toString()); } @Override public String getResourceListingPath(String groupName, String apiDeclaration) { apiDeclaration = super.getResourceListingPath(groupName, apiDeclaration); return apiDeclaration; } }; }
spring boot 整合swagger 建议使用如下版本
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency>
原文地址:https://blog.csdn.net/qq_33547169/article/details/106647954

浙公网安备 33010602011771号