Swagger-ui.html страница не работает springboot

Я переношу свой проект, основанный на springMVC, на весеннюю загрузку. это многомодульный проект. Мне не удается загрузить файл swagger-ui.html. Я добавил диспетчерский сервлет следующим образом:

@Configuration
public class DispatcherServletConfig {

@Bean
public DispatcherServlet dispatcherServlet() {
    return new DispatcherServlet();
}

@Bean
public ServletRegistrationBean dispatcherServletRegistration() {
    ServletRegistrationBean registration = new 
  ServletRegistrationBean(dispatcherServlet(), "/prefix1/*");
    registration.addUrlMappings("/admin/*");
    registration.addUrlMappings("/prefix2/*");
     registration.setName(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME);
    return registration;
}

}
private static final Set<String> DEFAULT_PRODUCES_AND_CONSUMES = 
          new HashSet<String>(Arrays.asList("application/json",
              "application/xml"));

@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport {

private static final Set<String> DEFAULT_PRODUCES_AND_CONSUMES = 
          new HashSet<String>(Arrays.asList("application/json",
              "application/xml"));

@Bean
public Docket api() {
    ParameterBuilder aParameterBuilder = new ParameterBuilder();
    aParameterBuilder.name("Authorization").modelRef(new ModelRef("string")).parameterType("header")
            .description("Authorization Header").required(true).build();
    List<Parameter> aParameters = new ArrayList<>();
    aParameters.add((Parameter) aParameterBuilder.build());
    return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any()).build().apiInfo(apiInfo()).globalOperationParameters(aParameters).produces(DEFAULT_PRODUCES_AND_CONSUMES);
}

private ApiInfo apiInfo() {
    Contact contact = new Contact("Power2SME Pvt. Ltd.", "http://www.power2sme.com", "[email protected]");
    return new ApiInfo("NBFC API", "Information related to api exposed by NBFC system.", "1.0",
            "https://www.power2sme.com/termsandconditions", contact, "License of API",
            "https://www.power2sme.com/privacypolicy", new ArrayList<>());
}
}

Я добавил в свой pom.xml следующие зависимости:

 <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-excelant</artifactId>
        <version>3.14</version>
    </dependency>
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3</version>
    </dependency>
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>com.ibm.icu</groupId>
        <artifactId>icu4j</artifactId>
        <version>3.4.4</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>4.3.2.RELEASE</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.4</version>
    </dependency>
    <dependency>
        <groupId>javax.annotation</groupId>
        <artifactId>javax.annotation-api</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.0.6</version>
    </dependency>
    <dependency>
        <groupId>com.opencsv</groupId>
        <artifactId>opencsv</artifactId>
        <version>3.8</version>
    </dependency>
    <dependency>
        <groupId>commons-httpclient</groupId>
        <artifactId>commons-httpclient</artifactId>
        <version>3.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>3.11</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-scratchpad</artifactId>
        <version>3.2-FINAL</version>
    </dependency>
    <dependency>
        <groupId>org.apache.xmlbeans</groupId>
        <artifactId>xmlbeans</artifactId>
        <version>2.6.0</version>
    </dependency>
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-bundle</artifactId>
        <version>1.19.1</version>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.10.19</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.scribe</groupId>
        <artifactId>scribe</artifactId>
        <version>1.3.7</version>
    </dependency>
    <dependency>
        <groupId>com.squareup.retrofit2</groupId>
        <artifactId>retrofit</artifactId>
        <version>2.4.0</version>
    </dependency>
    <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>logging-interceptor</artifactId>
        <version>3.10.0</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.8.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.8.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jms</artifactId>
        <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
        <version>2.9.6</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.0</version>
    </dependency>
    <dependency>
        <groupId>com.squareup.retrofit2</groupId>
        <artifactId>retrofit</artifactId>
        <version>2.4.0</version>
    </dependency>
    <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>logging-interceptor</artifactId>
        <version>3.10.0</version>
    </dependency>
    <dependency>
        <groupId>com.squareup.retrofit2</groupId>
        <artifactId>converter-jackson</artifactId>
        <version>2.4.0</version>
    </dependency>
</dependencies>

а также плагин:

<plugin>
            <groupId>io.github.robwin</groupId>
            <artifactId>swagger2markup-maven-plugin</artifactId>
            <version>0.9.3</version>
            <configuration>
                <inputDirectory>${project.basedir}/apiDoc/json</inputDirectory>
                <swaggerFile>swagger.json</swaggerFile>
                <outputDirectory>${project.basedir}/apiDoc/asciidoc</outputDirectory>
                <markupLanguage>asciidoc</markupLanguage>
            </configuration>
            <executions>
                <execution>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>process-swagger</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

Я сохранил apiDocs в папке моего проекта.

Я получаю сообщение об ошибке 404 всякий раз, когда вызываю свой {project_name} /prefix2/swagger-ui.html#

Swagger-ui.html страница не работает springboot и всякий раз, когда я вызываю {project_name} /swagger-ui.html# url, я получаю это Swagger-ui.html страница не работает springboot

Кроме того, swagger-ui.html не загружается в API. Swagger-ui.html страница не работает springboot

Как я могу решить эту проблему? Спасибо,

ты починил?

TuGordoBello 04.04.2019 21:43
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
1
18 065
10

Ответы 10

В проекте весенней загрузки вам нужно сделать:

Конфигурация Swagger в основном сосредоточена вокруг bean-компонента Docket.

@Bean
public Docket api() {                
    return new Docket(DocumentationType.SWAGGER_2)          
      .select()                                       
      .apis(RequestHandlerSelectors.basePackage("org.example.sp.controller"))
      .paths(PathSelectors.ant("/foos/*"))                     
      .build();
}

Swagger 2 включен через аннотацию @EnableSwagger2.

Чтобы убедиться, что Springfox работает, вы можете посетить следующий URL-адрес в своем браузере:

http://servert:port /project-name/api/v2/api-docs

Результатом является ответ JSON с большим количеством пар ключ-значение, который не очень удобочитаем. К счастью, Swagger предоставляет для этой цели пользовательский интерфейс Swagger.

И чтобы проверить свой swagger-ui, вы можете сделать это по URL: http://server:8080/toto/swagger-ui.html

И с этим aproche мы должны аннотировать наши конечные точки некоторыми чванливыми аннотациями: Есть простой документ здесь

Или вы можете следовать примеру здесь

У меня уже есть этот боб. Тем не менее, это не работает. что я думаю, это проблема github.com/springfox/springfox/issues/2037, но предоставленные решения не сработали. @TinyOS

Vaibhav Savala 24.11.2018 08:31

Я нигде не видел @ EnableSwagger2! Не могли бы вы удалить все, что у вас есть о чванстве, в своем проекте (кроме зависимостей) и попытаться создать класс SwaggerConfig, в который вы поместите то, что я вам дал, а затем попробуйте еще раз и скажите мне, что вы получите?

TinyOS 24.11.2018 21:44

Я добавил аннотацию EnableSwagger2, а компонент Docket был добавлен в сам SwaggerConfig. я отредактировал свой пост. Думаю, есть проблема с зависимостями. Я также опубликую свои зависимости. @TinyOS

Vaibhav Savala 25.11.2018 14:00

Попробуйте добавить следующий код в свой файл конфигурации swagger:

@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}*

Я считаю, что возникла проблема с webMvcConfigurer. В этом конкретном случае ваш Bean-компонент SwaggerConfig аннотируется только @Configuration и @EnableSwagger2. Этих двух аннотаций достаточно, чтобы прочитать конфигурацию и запустить Springfox по URL-адресу:

http://servert:port /project-name/api/v2/api-docs

Но если вы хотите открыть веб-страницу, вам необходимо включить webMvc, добавив аннотацию @EnableWebMvc в свой компонент конфигурации, и предоставить webMvcConfigurer соответствующие обработчики ресурсов.

Без каких-либо других конфигураций кода, который я разместил ниже, достаточно, чтобы открыть пользовательский интерфейс Swagger:

@Configuration
@EnableSwagger2
@EnableWebMvc
public class SwaggerConfig {

    @Bean
    public Docket api(){
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }


    @Bean
    public WebMvcConfigurer webMvcConfigurer()
    {
        return new WebMvcConfigurer()
        {
            @Override
            public void addResourceHandlers( ResourceHandlerRegistry registry )
            {
                registry.addResourceHandler( "swagger-ui.html" ).addResourceLocations( "classpath:/META-INF/resources/" );
                registry.addResourceHandler( "/webjars/**" ).addResourceLocations( "classpath:/META-INF/resources/webjars/" );
            }
        };
    }
}

В моем случае понижение версии Swagger помогло.

Не могу увидеть swagger пользовательского интерфейса (404)

<swagger.version>3.0.0</swagger.version>

Работает отлично:

<swagger.version>2.9.2</swagger.version>

Зависимости:

 <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>${swagger.version}</version>
  </dependency>
  <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>${swagger.version}</version>
  </dependency>

Это спасло мне день .. Спасибо за ответ, валижон ..

manish bansal 20.10.2020 14:59

Я пробовал это, но это не сработало. Проблема в том, что мне удалось получить доступ к /v2/api-docs, но не к swagger-ui.html.

Chetan Oswal 26.10.2020 13:29

@ChetanOswal У меня была точно такая же ситуация. Пожалуйста, проверьте, перезагружает ли maven зависимости после изменения

valijon 26.10.2020 15:03

Привет, @valijon, спасибо за быстрый ответ. Я решил проблему. Я открыл свое приложение в режиме incognito, и страница swagger-ui.html отображалась. Затем я снова открылся нормально, и он не работал. Я осмотрел страницу, перешел на вкладку сети, щелкнул правой кнопкой мыши API и выбрал опцию Clear browser cache, и вуаля! Страница отображается правильно. Удивлен, да, я.

Chetan Oswal 26.10.2020 15:13

(Репутация не позволяет мне комментировать ответы)

В моем случае понижение рейтинга тоже помогло

От:

<swagger.version>3.0.0</swagger.version>

К

<swagger.version>2.9.2</swagger.version>

Проверьте jar-версию swagger-ui. добавление

@Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2)
      .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any())
      .build(); }

и в pom.xml

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

с URL: http: // localhost: 8080 / swagger-ui.html

У меня это сработало. Если вы используете другую версию jar-файла springfox-swagger-ui, просто откройте эту банку и проверьте путь к swagger-ui.html и соответствующим образом измените свой URL-адрес.

Для тех, кто использует более новую версию swagger, вот решение для доступа к странице swagger ui.

Замените это:

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.8.0</version>
  </dependency>
    <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.8.0</version>
    </dependency>

с этим:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

в вашем файле pom.xml.

Получите доступ к странице по следующему URL-адресу (избегайте этого расширения .html): http: // локальный: 8080 / swagger-ui /

Восстановите и перезапустите сервер. И ваша проблема решена!

Попробуйте использовать

swagger-ui/index.html

вместо

swagger-ui.html

для Swagger 3.0 вы можете использовать

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

тогда пользовательский интерфейс будет http: // localhost: 8080 / swagger-ui / вместо http: // localhost: 8080 / swagger-ui.html

У меня такая же проблема.

1.) сначала вам нужно добавить следующие аннотации в файл конфигурации:

@SpringBootApplication
@EnableSwagger2
public class PostApplication {

   public static void main(String[] args) {
      SpringApplication.run(PostApplication.class, args);
   }

}

2.) второй Добавьте 3 зависимости в pom.xml

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>2.9.2</version>
</dependency>

<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>2.9.2</version>
</dependency>

3.) наконец откройте http: // localhost: 8081 / swagger-ui.html8081: порт вашего сервера

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