Страница ошибки WhiteLabel при попытке доступа к swagger-ui.html с использованием конфигурации springfox

Я пытаюсь сгенерировать документацию Swagger из проекта Springboot, используя Springfox и следуя документации https://www.baeldung.com/swagger-2-documentation-for-spring-rest-api.

Первоначально я получил сообщение об ошибке "Требуется полная авторизация для доступа к ресурсу", поскольку я использую OAuth2 в своем приложении. Я изменил конфигурацию, чтобы разрешить все запросы, заканчивающиеся на /swagger-ui.html.

Теперь я получаю "страницу ошибки WhiteLabel - это приложение не имеет явного сопоставления для /error" при попытке доступа к /swagger-ui.html на моем локальном компьютере.

Я просматривал различные посты, но ни одно из решений не помогло мне - я не использую @webmvcconfiguration, которая может помешать. Кто-нибудь может помочь?

1 ответ

Для Swagger 3.0 URL-адрес изменен на

http://localhost:8080/swagger-ui/index.html

  1. Удалите зависимости v2 из вашего pom.xml или закомментируйте их.

     <dependency>
         <groupId>io.springfox</groupId>
         <artifactId>springfox-swagger2</artifactId>
         <version>3.0.0</version>
     </dependency>
    
     <dependency>
         <groupId>io.springfox</groupId>
         <artifactId>springfox-swagger-ui</artifactId>
         <version>3.0.0</version>
     </dependency>
    
  2. Добавьте springfox-boot-starter

     <dependency>
         <groupId>io.springfox</groupId>
         <artifactId>springfox-boot-starter</artifactId>
         <version>3.0.0</version>
     </dependency>
    
  3. Измените URL-адрес в своем браузере на: http://localhost:8080/swagger-ui/index.html

Общая форма URL-адреса:

  • http://host/context-path/swagger-ui/index.html ИЛИ
  • http: // хост / путь-контекста / swagger-ui /

Для получения дополнительной информации проверьте эту ссылку, которая ведет к соответствующей документации:https://springfox.github.io/springfox/docs/snapshot/#changes-in-swagger-ui

Вот как я решил свою проблему. Вот мой подробный код, если кто хочет посмотреть.

https://github.com/xbox2204/SpringBoot-JPA-Swagger

Теперь я использовал 3.0.0-SNAPSHOT и последний стартовый проект с весенней загрузкой, который я создал отсюда:

https://start.spring.io/

  1. В свой pom.xml я добавил следующие зависимости:
    <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>3.0.0-SNAPSHOT</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.plugin</groupId>
                    <artifactId>spring-plugin-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>3.0.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.plugin</groupId>
            <artifactId>spring-plugin-core</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>

  1. В моем application.properties я добавил следующее:
spring.resources.add-mappings=true
  1. В моем классе SpringBoot Main/Runner я добавил эти аннотации
@EnableWebMvc
@EnableSwagger2
@SpringBootApplication
  1. Моя функция возврата Docket выглядела так
@Bean
    public Docket productApi() {
        Contact contact =new Contact(
                "Vineet Mishra",
                "https://github.com/xbox2204",
                "whatwillyoudo@withmyemail.com"
        );
        ApiInfo apiInfo= new ApiInfoBuilder().title("VINEET SPRING-BOOT API")
                .description("Spring-Boot for all")
                .termsOfServiceUrl("jUST CHILL!!!")
                .contact(contact)
                .licenseUrl("something@something.com").version("1.0").build();

        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo)
                .select()
                .apis(RequestHandlerSelectors.any())
                .build();
    }
  1. Наконец, я получил доступ к своему swagger-ui из

http://localhost:8080/swagger-ui/index.html#

Изображение окончательного результата

Страница swagger-ui.html делает несколько вызовов, чтобы получить все детали. Если вы используете инструменты разработчика вашего браузера (обычно просто нажмите F12, чтобы открыть), вы увидите неудавшиеся запросы на вкладке сети. Вам нужно будет разрешить запросы

    "/v2/api-docs",
    "/swagger-resources/**",
    "/swagger-ui.html**",
    "/webjars/**"

В документации Springfox есть некоторая информация, найдите "безопасность" или "авторизация"

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