Почему SpringFox-swagger2 UI говорит мне " невозможно вывести базовый url."

почему SpringFox-swagger2 UI говорит мне Unable to infer base url. насколько я знаю, я использую типичную конфигурацию пружинной загрузки Swagger.

как вы можете видеть на скриншоте, форс-лиса URL-адрес поддержка интерфейса example.com/api . Примечание: Я получаю стандартную пружину Whitelabel Error Page когда я перехожу к:https://localhost:9600/api/v2/api-docs/ . Я подозреваю, что в этом корень проблемы? Я не вижу ошибок в том, что весна не загрузилась springfox-swagger2 и поэтому я не знаю почему это не работает.

enter image description here

моя конфигурация выглядит примерно так (и я пробовал всевозможные варианты этой конфигурации, от поиска в сети для Советов):

@EnableSwagger2
@EnableWebMvc
@ComponentScan(basePackages = {"com.company.project"})
public class SwaggerConfig
{
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.boot")))
                .apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.cloud")))
                .apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.data.rest.webmvc")))
                .paths(PathSelectors.any())
                .build();
    }
}

и

<!-- to generate /swagger-ui.html -->
<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>

Примечание: интересно, когда я пробую версию 2.6.0, я не получаю модальное всплывающее окно, но мой Swagger UI показывает 0 api контента. Итак, я знаю, что модальный должен быть довольно новым?

если здесь недостаточно информации, оставьте мне комментировать.

4 ответов


я смог решить проблему, добавив SpringBootApplication с аннотацией - как предложил Марк:

@EnableSwagger2

оказывается, что решением моей проблемы было переместить @EnableSwagger2 аннотация в основной класс конфигурации вместе с компонентом Docket.

Я создал отдельный класс в подпакете с Бобом Docket, и я ожидал, что он будет сканироваться весной и загружать Боб. Возможно, я не смог аннотировать этот класс docket с помощью @Component, или, может быть, проблема была в чем-то другом, но я заставил ее работать.


просто расширьте свой основной класс с помощью SpringBootServletInitalizer. Все будет хорошо. Возьмите ссылку как ниже.

public class TestApp extends SpringBootServletInitializer{

    public static void main(String[] args) {

       SpringApplication.run(TestApp.class, args);
   }
}

для меня проблема заключалась в том, что Spring Security не разрешала доступ к некоторым ресурсам, необходимым swagger-ui. Решение состояло в том, чтобы разрешить анонимный доступ к следующим путям:

  • /swagger-ui.HTML-код
  • /webjars/**
  • / v2/**
  • / swagger-ресурсы/**

в моем случае это хорошо, что эти ресурсы могут быть доступны без авторизации.