Не удалось добавить имя приложения в базовый 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 .

Другие вопросы по тегам