zoukankan      html  css  js  c++  java
  • Spring Boot中使用Swagger2构建API文档

    程序员都很希望别人能写技术文档,自己却很不愿意写文档。因为接口数量繁多,并且充满业务细节,写文档需要花大量的时间去处理格式排版,代码修改后还需要同步修改文档,经常因为项目时间紧等原因导致文档滞后于代码,接口调用方的抱怨声不绝于耳。而程序员是最擅长"偷懒"的职业了,自然会有多种多样的自动生成文档的插件.今天要介绍的就是Swagger.

    接下来我们在Spring Boot中使用Swagger2构建API文档

    Swagger是一个简单但功能强大的API表达工具。它具有地球上最大的API工具生态系统,数以千计的开发人员,使用几乎所有的现代编程语言,都在支持和使用Swagger。使用Swagger生成API,我们可以得到交互式文档,自动生成代码的SDK以及API的发现特性等。

    我们先来看看具体效果:
    tim 20170806152444

    可以看到Swagger-Ui是以controller分类,点击一个controller可以看到其中的具体接口,再点击接口就可以看到接口的信息了,如图:

    tim 20170806152444

    我们可以看到该接口的请求方式,返回数据信息和需要传递的参数.而且以上数据是自动生成的,即使代码有一些修改,Swagger文档也会自动同步修改.非常的方便.

    • 构建RESTful API

    在使用Swagger2前我们需要有一个RESTful API的项目. Spring-Boot创建RESTful API项目非常的方便和快速,这里不再介绍如何创建,需要的可以参照项目代码

    • 添加Swagger2依赖

    在pom.xml文件中加入以下依赖.

     1 <dependency>
     2       <groupId>io.springfox</groupId>
     3       <artifactId>springfox-swagger2</artifactId>
     4       <version>2.7.0</version>
     5 </dependency>
     6  <dependency>
     7       <groupId>io.springfox</groupId>
     8       <artifactId>springfox-swagger-ui</artifactId>
     9       <version>2.7.0</version>
    10 </dependency>
    • 创建Swagger2的Java配置类

      通过@Configuration注解,表明它是一个配置类,@EnableSwagger2 注解开启swagger2。apiInfo() 方法配置一些基本的信息。createRestApi() 方法指定扫描的包会生成文档,默认是显示所有接口,可以用@ApiIgnore注解标识该接口不显示。

     1 /**
     2  * Created by Yuicon on 2017/5/20.
     3  * https://github.com/Yuicon
     4  */
     5 @Configuration
     6 @EnableSwagger2
     7 public class Swagger2 {
     8 
     9     @Bean
    10     public Docket createRestApi() {
    11         return new Docket(DocumentationType.SWAGGER_2)
    12                 .apiInfo(apiInfo())
    13                 .select()
    14                 // 指定controller存放的目录路径
    15                 .apis(RequestHandlerSelectors.basePackage("com.digag.web"))
    16                 .paths(PathSelectors.any())
    17                 .build();
    18     }
    19 
    20     private ApiInfo apiInfo() {
    21         return new ApiInfoBuilder()
    22                  // 文档标题
    23                 .title("DigAg")
    24                 // 文档描述
    25                 .description("https://github.com/Yuicon")
    26                 .termsOfServiceUrl("https://github.com/Yuicon")
    27                 .version("v1")
    28                 .build();
    29     }
    30 
    31 }
    • 编辑文档接口信息

    先看一个例子:

    1  @ApiOperation(value="创建条目")
    2     @RequestMapping(method = RequestMethod.POST)
    3     public JsonResult<Entry> saveEntry(@RequestBody @ApiParam(value = "条目对象", required = true) Entry entry, HttpServletRequest request) {
    4         return entryService.create(entry, request);
    5     }

    Swagger2提供了一些注解来丰富接口的信息,常用的有:

    @ApiOperation:用在方法上,说明方法的作用
    
    value: 表示接口名称
    notes: 表示接口详细描述
    @ApiImplicitParams:用在方法上包含一组参数说明
    
    @ApiImplicitParam:用在@apiimplicitparams注解中,指定一个请求参数的各个方面
    
    paramType:参数位置
    header 对应注解:@requestheader
    query 对应注解:@requestparam
    path 对应注解: @pathvariable
    body 对应注解: @requestbody
    name:参数名
    dataType:参数类型
    required:参数是否必须传
    value:参数的描述
    defaultValue:参数的默认值
    @ApiResponses:用于表示一组响应
    
    @ApiResponse:用在@apiresponses中,一般用于表达一个错误的响应信息
    
    code:状态码
    
    message:返回自定义信息
    
    response:抛出异常的类
    • 访问文档

    swagger2文档的默认地址是 /swagger-ui.html, 本地开发的访问http://localhost:8080/swagger-ui.html就可以看到自动生成的文档了.

    完整结果示例可查看项目代码

    参考信息

    Swagger注解文档
    Swagger官方网站

  • 相关阅读:
    oracle 函数
    Oracle 语句
    递归算法算出某个目录下所有目录和文件
    static
    递归算法
    JVM/JDK/JRE
    java跨平台原理
    .NET 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”
    JS 判断对象是否为空
    html网页打印A4样式
  • 原文地址:https://www.cnblogs.com/yuicon/p/7295223.html
Copyright © 2011-2022 走看看