在我的 Springboot 项目中添加 swagger3 后无法将应用程序名称添加到基本 URL
Posted
技术标签:
【中文标题】在我的 Springboot 项目中添加 swagger3 后无法将应用程序名称添加到基本 URL【英文标题】:Unable to add application name to base URL after adding swagger3 in my Springboot project 【发布时间】:2021-12-11 02:19:57 【问题描述】:当我使用 springfox-swagger 2.9.0 时,我在我的项目中使用了以下代码。
@Configuration
@EnableSwagger2
public class SwaggerConfig
@Bean
public Docket api()
Docket docket = null;
try
if(!(profile.contains("local")|| (profile.contains("test"))
docket = new Docket(DocumentationType.SWAGGER_2)
.host(host)
.pathProvider(new RelativePathProvider(servletContext)
@Override
public String getApplicationBasePath()
return "/api";
)
.select()
.apis(RequestHandlerSelectors.basePackage("org.app.controller"))
.paths(PathSelectors.any())
.build();
else
docket = new Docket(DocumentationType.SWAGGER_2)
.host(host)
.select()
.apis(RequestHandlerSelectors.basePackage("org.app.controller"))
.paths(PathSelectors.any())
.build();
catch(Exception e)
logger.info("Unable to return docket",ex)
return docket;
添加以下 swagger 3.0.0 依赖后,我更新的类是:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
@Configuration
public class SwaggerConfig
@Bean
public Docket api()
Docket docket = null;
try
if(!(profile.contains("local")|| (profile.contains("test"))
docket = new Docket(DocumentationType.SWAGGER_2)
.host(host)
.pathProvider(new PathProvider()
@Override
public String getOperationPath(String operationPath)
return operationPath.replace("/api","");
@Override
public String getResourceListingPath(String groupName, String apiDeclaration)
return null;
)
.select()
.apis(RequestHandlerSelectors.basePackage("org.app.controller"))
.paths(PathSelectors.any())
.build();
else
docket = new Docket(DocumentationType.SWAGGER_2)
.host(host)
.select()
.apis(RequestHandlerSelectors.basePackage("org.app.controller"))
.paths(PathSelectors.any())
.build();
catch(Exception e)
logger.info("Unable to return docket",ex)
return docket;
使用此代码后,我无法从更新的 swagger url 将“/api”附加到我的 baseurl“localhost:8080”。 http://localhost:8080/abc-api/swagger-ui/index.html#/
基本网址应显示为“localhost:8080/api”。
我尝试为 PathProvider 实现创建单独的 bean,然后传入参数,但仍然存在同样的问题。
谁能告诉我我在这里做错了什么以及如何将baseurl创建为“/api”或“/”?
【问题讨论】:
【参考方案1】:这不是您问题的答案,但它可能对您有所帮助。 由于无论如何您都在迁移,请考虑使用 springdoc 而不是 Springfox。它是一个较新的库,比 Springfox 更易于使用且不易出错。我们在 2 年前搬到这里,我们很高兴我们做到了。网上有很好的文档和教程:
https://springdoc.org/ https://www.baeldung.com/spring-rest-openapi-documentation它也非常活跃,您通常会在github page 上很快得到解答。
【讨论】:
根据公司标准,必须仅在我的项目中使用 springfox。我不能简单地改变图书馆。所以寻找任何与springfox-swagger库相关的解决方案 很公平 ;) 如果你能改变它,将来考虑springdoc
。以上是关于在我的 Springboot 项目中添加 swagger3 后无法将应用程序名称添加到基本 URL的主要内容,如果未能解决你的问题,请参考以下文章
在我的 Spring MVC 应用程序中实现 Spring Actuator 而不添加 Spring Boot