Не удалось добавить имя приложения в базовый URL-адрес после использования Swagger 3.0.0 в моем проекте Springboot
Когда я использовал 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;
}
}
После использования этого кода я не могу добавить «/ api» к моему базовому URL-адресу «localhost:8080» из обновленного URL-адреса swagger. http: // локальный:8080 / abc-api / swagger-ui / index.html#/
Базовый URL-адрес должен выглядеть как «localhost:8080 / api».
Может ли кто-нибудь сказать мне, что я здесь делаю не так?
1 ответ
Это не ответ на вашу проблему, но может вам помочь. Поскольку вы все равно переходите, рассмотрите возможность использования springdoc вместо Springfox . Это более новая библиотека, которая проще в использовании и менее подвержена ошибкам, чем Springfox. Мы переехали в него 2 года назад и очень рады, что сделали это. Для этого есть очень хорошая документация и руководства в Интернете:
Он также очень активен, и вы обычно очень быстро получаете ответы на свои вопросы на странице github .