论坛首页 编程语言技术论坛

Spring Boot集成Swagger2【从零开始学Spring Boot】

浏览 13558 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2016-09-07  

本节主要从以下几个方面进行讲解:

1Swagger的产生;

2Swagger的介绍;

3)新建maven java project;

4)在pom.xml添加依赖;

5)创建Swagger2配置类;

6)编写Controller测试类;

 

       我们一起看看每个环节的具体知识。

1Swagger的产生

       我们的RESTful API需要面对多个开发人员或多个开发团队:IOS开发、Android开发或是Web开发等。为了减少与其他团队平时开发期间的频繁沟通成本,传统做法我们会创建一份RESTful API文档来记录所有接口细节,然而这样的做法有以下几个问题:

 

<!--[if !supportLists]-->l  <!--[endif]-->由于接口众多,并且细节复杂(需要考虑不同的HTTP请求类型、HTTP头部信息、HTTP请求内容等),高质量地创建这份文档本身就是件非常吃力的事,下游的抱怨声不绝于耳。

<!--[if !supportLists]-->l  <!--[endif]-->随着时间推移,不断修改接口实现的时候都必须同步修改接口文档,而文档与代码又处于两个不同的媒介,除非有严格的管理机制,不然很容易导致不一致现象。

       Swagger的产生就是为了解决以上这些问题。

 

2Swagger的介绍

       Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。

       接下来我们介绍spring boot怎么集成swagger

 

3)新建maven java project;

       新建一个maven java project取名为:spring-boot-Swagger

4)在pom.xml添加依赖;

       pom.xml添加依赖,主要是springfox-swagger2springfox-swagger-ui这里使用的是2.2.2版本的的:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

 

  <groupId>com.kfit</groupId>

  <artifactId>spring-boot-Swagger</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>jar</packaging>

 

  <name>spring-boot-Swagger</name>

  <url>http://maven.apache.org</url>

 

  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

     <!-- jdk版本号,angel在这里使用1.8,大家修改为大家本地配置的jdk版本号即可 -->

    <java.version>1.8</java.version>

  </properties>

 

<!--

       spring boot 父节点依赖,

       引入这个之后相关的引入就不需要添加version配置,

       spring boot会自动选择最合适的版本进行添加。

     -->

    <parent>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-parent</artifactId>

       <version>1.3.3.RELEASE</version>

    </parent>

 

 

  <dependencies>

   

    <!-- spring boot web支持:mvc,aop... -->

       <dependency>

           <groupId>org.springframework.boot</groupId>

           <artifactId>spring-boot-starter-web</artifactId>

       </dependency>

      

         <!-- Swagger -->

        <dependency>

            <groupId>io.springfox</groupId>

            <artifactId>springfox-swagger-ui</artifactId>

            <version>2.2.2</version>

        </dependency>

 

        <dependency>

            <groupId>io.springfox</groupId>

            <artifactId>springfox-swagger2</artifactId>

            <version>2.2.2</version>

        </dependency>

 

 

 

        <dependency>

            <groupId>org.json</groupId>

            <artifactId>json</artifactId>

        </dependency>

  </dependencies>

</project>

 

5)创建Swagger2配置类;

              编写一个swagger配置类,com.kfit.config.SwaggerConfig

package com.kfit.config;

 

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.context.request.async.DeferredResult;

 

import com.google.common.base.Predicates;

 

import springfox.documentation.builders.PathSelectors;

import springfox.documentation.service.ApiInfo;

import springfox.documentation.spi.DocumentationType;

import springfox.documentation.spring.web.plugins.Docket;

import springfox.documentation.swagger2.annotations.EnableSwagger2;

 

/**

 * Swagger配置类:

 * @author Angel --守护天使

 * @version v.0.1

 * @date 201697

 */

@Configuration

@EnableSwagger2

publicclass SwaggerConfig {

   

    /**

     * SpringBoot默认已经将classpath:/META-INF/resources/classpath:/META-INF/resources/webjars/映射

     * 所以该方法不需要重写,如果在SpringMVC中,可能需要重写定义(我没有尝试)

     * 重写该方法需要 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/");

//    }

   

    /**

     * 可以定义多个组,比如本类中定义把testdemo区分开了

     * (访问页面就可以看到效果了)

     *

     */

   

    @SuppressWarnings("unchecked")

    @Bean

    public Docket testApi(){

       Docket docket = new Docket(DocumentationType.SWAGGER_2)

              .groupName("test")

              .genericModelSubstitutes(DeferredResult.class)

              .useDefaultResponseMessages(false)

                .forCodeGeneration(true)

                .pathMapping("/")// base,最终调用接口后会和paths拼接在一起

                .select()

                .paths(Predicates.or(PathSelectors.regex("/api/.*")))//过滤的接口

                .build()

                .apiInfo(testApiInfo());

              ;

       returndocket;

    }

   

    @SuppressWarnings("unchecked")

    @Bean

    public Docket demoApi() {

        returnnew Docket(DocumentationType.SWAGGER_2)

                .groupName("demo")

                .genericModelSubstitutes(DeferredResult.class)

//              .genericModelSubstitutes(ResponseEntity.class)

                .useDefaultResponseMessages(false)

                .forCodeGeneration(false)

                .pathMapping("/")

                .select()

                .paths(Predicates.or(PathSelectors.regex("/demo/.*")))//过滤的接口

                .build()

                .apiInfo(demoApiInfo());

    }

   

     private ApiInfo testApiInfo() {

            ApiInfo apiInfo = new ApiInfo("Test相关接口",//大标题

                    "Test相关接口,主要用于测试.",//小标题

                    "1.0",//版本

                    "http://412887952-qq-com.iteye.com/",

                    "Angel",//作者

                    "北京知远信息科技有限公司",//链接显示文字

                    "http://www.kfit.com.cn/"//网站链接

            );

 

            returnapiInfo;

        }

 

        private ApiInfo demoApiInfo() {

            ApiInfo apiInfo = new ApiInfo("Demo相关接口",//大标题

                    "Demo相关接口,获取个数,获取列表,注意:",//小标题

                    "1.0",//版本

                    "http://412887952-qq-com.iteye.com/",

                    "Angel",//作者

                    "北京知远信息科技有限公司",//链接显示文字

                    "http://www.kfit.com.cn/"//网站链接

            );

 

            returnapiInfo;

        }

   

}

       上代码所示,通过@Configuration注解,让Spring来加载该类配置。再通过@EnableSwagger2注解来启用Swagger2

       再通过createRestApi函数创建DocketEN-U

  • 大小: 19.9 KB
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics