Swagger UI не появляется - PullRequest
1 голос
/ 26 февраля 2020

Я работал над весенним проектом. Сначала я добавил в свой проект swagger, и мой интерфейс swagger также показывает все контроллеры, но когда я добавил токен-носитель JWT в свой проект. Каким-то образом я не могу войти, чтобы развязать пользовательский интерфейс. И он продолжает показывать следующее окно в моем браузере. Как я мог решить эту проблему какими-либо идеями?

enter image description here

в пом. xml

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



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

Класс конфигурации для Swagger другого класса конфигурации у меня пока нет

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SpringFoxConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("uzb.ofb.reportgen.controller"))
                .paths(PathSelectors.any())
                .build();
    }
}

Обновление

enter image description here

ОБНОВЛЕНИЕ2 enter image description here

После следующего кода

@Configuration
@EnableSwagger2
public class SpringFoxConfig implements 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/");
    }

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("uzb.ofb.reportgen.controller"))
                .paths(PathSelectors.any())
                .build();
    }
}

Ответы [ 3 ]

1 голос
/ 26 февраля 2020

Используете ли вы Spring-Security в вашем проекте? Попробуйте переопределить метод configure() в настройках безопасности:

@Override
public void configure(WebSecurity web) {
    web.ignoring()
       .antMatchers("/webjars/**", "/swagger-resources/**", "/swagger-ui.html",
               "/v2/api-docs/**");
}
1 голос
/ 26 февраля 2020

Swagger UI обслуживается из веб-jar, вам нужно настроить Spring MVC.

    @Configuration
    @EnableSwagger2
    public class WebConfig implements 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/");
        }
    }
1 голос
/ 26 февраля 2020

Вы должны расширить WebMvcConfigurerAdapter и переопределить метод:

        @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/");
        }
...