Почему 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
и поэтому я не знаю почему это не работает.
моя конфигурация выглядит примерно так (и я пробовал всевозможные варианты этой конфигурации, от поиска в сети для Советов):
@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-ресурсы/**
в моем случае это хорошо, что эти ресурсы могут быть доступны без авторизации.