【问题标题】:Have a problem with swagger-ui and springbootswagger-ui和spring boot有问题
【发布时间】:2018-10-22 22:41:15
【问题描述】:

这是我使用的配置和依赖项:

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

这是配置:

@Configuration
@EnableSwagger2
public class SwaggerConfig {                                    
    public static final Contact DEFAULT_CONTACT = new Contact(
              "test", "https://www.test.com", "contact@mycode.ma");

          public static final ApiInfo DEFAULT_API_INFO = new ApiInfo(
              "test api", "For signing pdf document", "1.0",
              "urn:tos", DEFAULT_CONTACT, 
              "License", "license 0-1");

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

          @Bean
          public Docket api() {
            return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(DEFAULT_API_INFO)
                .produces(DEFAULT_PRODUCES_AND_CONSUMES)
                .consumes(DEFAULT_PRODUCES_AND_CONSUMES);
          }
}

当我使用这条路径时:http://localhost:8090/v2/api-docs 给了我 json。 但是当我想使用http://localhost:8090/swagger-ui.html 时不起作用。 谢谢你帮助我。

【问题讨论】:

    标签: spring-boot swagger-ui


    【解决方案1】:

    尝试如下所示扩展 WebMvcConfigurationSupport 并覆盖 add ResourceHandlers 并且应该适合您。

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig extends WebMvcConfigurationSupport {
    
    public static final Contact DEFAULT_CONTACT = new Contact("Nagaraja", "", "email-id");
    
    private static final Set<String> DEFAULT_PRODUCES_AND_CONSUMES = new HashSet<>(
            Arrays.asList("application/json"));
    
    @Bean
    public Docket productApi() {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(metaData()).produces(DEFAULT_PRODUCES_AND_CONSUMES)
                .consumes(DEFAULT_PRODUCES_AND_CONSUMES).select()
                .apis(RequestHandlerSelectors.basePackage("controller-package")).paths(PathSelectors.any())
                .build();
    
    }
    
    private ApiInfo metaData() {
        return new ApiInfoBuilder().title("REST API")
                .description("Write description").version("1.0.0")
                .license("Apache License Version 2.0").licenseUrl("https://www.apache.org/licenses/LICENSE-2.0")
                .contact(DEFAULT_CONTACT).build();
    }
    
    @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/");
    }
    

    Maven 依赖:

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.8.0</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
            <scope>compile</scope>
        </dependency>
    

    【讨论】:

    • 你能告诉我你面临的具体问题吗?
    • 请在日志中检查以下映射--- [restartedMain] o.s.w.s.handler.SimpleUrlHandlerMapping :将 URL 路径 [/swagger-ui.html] 映射到 [class org.springframework.web. servlet.resource.ResourceHttpRequestHandler]
    • 谢谢我在我的日志中没有找到任何路径 /swagger-ui.html 我只是找到了我的控制器的 v2/api-docs 和其他路径
    • 再次检查您的 pom.xml 中的依赖项(见上文)并进行全新安装
    猜你喜欢
    • 2018-01-27
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 2016-12-11
    • 2023-01-04
    • 2020-03-16
    • 2021-12-21
    • 2021-07-20
    相关资源
    最近更新 更多