zoukankan      html  css  js  c++  java
  • SpringBoot集成Swagger2

    SwaggerUI作用:
    1.所有接口方法可以动态的生成API文档,开发无需手动编写文档
    2.研发可以直接点击对应接口完成自测
    3.测试人员可以测试。

    • pom.xml文件添加依赖
    <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>
    • 创建swagger配置类
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
    
        @Bean
        public Docket api(){
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .pathMapping("/")
                    .useDefaultResponseMessage(false)
                    .select()
                    .paths(PathSelectors.regex("/.*"))
                    .build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder().title("Swagger 接口文档")
                    .contact(new Contact("swagger","","swagger@swagger.com.cn"))
                    .description("Swagger 生成的接口文档")
                    .version("1.0.0.0")
                    .build();
    
        }
    }

    我们在使用SpringBoot集成Swagger2中,访问:http://localhost/swagger-ui.html 如果出现问题,页面显示默认报错页面。后台报错:

    No mapping found for HTTP request with URI [/swagger-ui.html] in DispatcherServlet with name ‘dispatcherServlet’

    解决方案

    这个错误,是因为静态资源路径映射问题导致。
    我们在访问 http://localhost/swagger-ui.html 时,这个swagger-ui.html 相关的所有前端静态文件都在 springfox-swagger-ui-2.7.0.jar 里面。SpringBoot自动配置本身并不会把 /swagger-ui.html 这个路径映射到对应的目录 META-INF/resources/下面。我们加上这个映射即可。构建一个WebMvcConfig 类,代码如下:

    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    
    @Configuration
    public class WebMvcConfig extends 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/");
        }
    }

    或者直接在 SwaggerConfig 类上继承 WebMvcConfigurerAdapter ,代码如下:

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig extends WebMvcConfigurerAdapter {
    
        @Bean
        public Docket api(){
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .pathMapping("/")
                    .useDefaultResponseMessage(false)
                    .select()
                    .paths(PathSelectors.regex("/.*"))
                    .build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder().title("Swagger 接口文档")
                    .contact(new Contact("swagger","","swagger@swagger.com.cn"))
                    .description("Swagger 生成的接口文档")
                    .version("1.0.0")
                    .build();
    
        }
    }

    需要特别说明一下的是,SwaggerConfig 这个类一定要配置正确。

  • 相关阅读:
    Python 获取校内(人人网)的所有好友照片存储到本地
    Learning DNN Module Developers guide
    第一次用blog
    杂谈:淘宝商城“暴动”事件
    百度三维地图体验(坑爹啊有图有真相)
    从历史的角度杂谈《中国没有乔布斯,美国没有史玉柱》说起
    南漂一年个人随想录
    我离淘宝有多远?
    centos搭建Git分布式管理控制系统
    乔布斯与中国
  • 原文地址:https://www.cnblogs.com/rinack/p/11290920.html
Copyright © 2011-2022 走看看