zoukankan      html  css  js  c++  java
  • zbb20181221 swagger2,swagger,springboot接口文档

    1:认识Swagger

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

     作用:

        1. 接口的文档在线自动生成。

        2. 功能测试。

     Swagger是一组开源项目,其中主要要项目如下:

    1.   Swagger-tools:提供各种与Swagger进行集成和交互的工具。例如模式检验、Swagger 1.2文档转换成Swagger 2.0文档等功能。

    2.   Swagger-core: 用于Java/Scala的的Swagger实现。与JAX-RS(Jersey、Resteasy、CXF...)、Servlets和Play框架进行集成。

    3.   Swagger-js: 用于JavaScript的Swagger实现。

    4.   Swagger-node-express: Swagger模块,用于node.js的Express web应用框架。

    5.   Swagger-ui:一个无依赖的HTML、JS和CSS集合,可以为Swagger兼容API动态生成优雅文档。

    6.   Swagger-codegen:一个模板驱动引擎,通过分析用户Swagger资源声明以各种语言生成客户端代码。

    2:Maven

     <!-- Swagger API文档 -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.7.0</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.7.0</version>
            </dependency>

    3:创建Swagger2Config配置类

    
    

    package com.zbb.app.config;

    
    

    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;

    
    

    import io.swagger.annotations.ApiOperation;
    import lombok.extern.slf4j.Slf4j;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    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;

    
    

    /**
    * Swagger2配置类
    * 在与spring boot集成时,放在与Application.java同级的目录下。
    * 通过@Configuration注解,让Spring来加载该类配置。
    * 再通过@EnableSwagger2注解来启用Swagger2。
    */
    @Slf4j
    @Configuration
    @EnableSwagger2
    public class Swagger2Config {

    
    

    @Value("${swagger.title}")
    private String title;

    
    

    @Value("${swagger.description}")
    private String description;

    
    

    @Value("${swagger.version}")
    private String version;

    
    

    @Value("${swagger.termsOfServiceUrl}")
    private String termsOfServiceUrl;

    
    

    @Value("${swagger.contact.name}")
    private String name;

    
    

    @Value("${swagger.contact.url}")
    private String url;

    
    

    @Value("${swagger.contact.email}")
    private String email;

    
    

    /**
    * 创建API应用
    * apiInfo() 增加API相关信息
    * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
    * 本例采用指定扫描的包路径来定义指定要建立API的目录。
    *
    */
    @Bean
    public Docket createRestApi() {

    
    

    log.info("加载Swagger2");

    
    

    return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
    // 扫描所有有注解的api,用这种方式更灵活
    .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
    .paths(PathSelectors.any()).build();
    }

    
    

    /**
    * 创建该API的基本信息(这些基本信息会展现在文档页面中)
    * 访问地址:http://项目实际地址/swagger-ui.html
    * @return
    */
    private ApiInfo apiInfo() {
    return new ApiInfoBuilder().title(title).description(description)
    .termsOfServiceUrl(termsOfServiceUrl).contact(new Contact(name, url, email))
    .version(version).build();
    }
    }

     

    4:配置application.yml

    spring:
        aop:
            auto: true
            proxy-target-class: true
    # 忽略鉴权url
    ignored:
      urls:
      - /app/common/admin/getUserTypeList
      - /app/common/admin/sendAuthCodeN
    # Swagger界面内容配置
    swagger:
      title: app API接口文档
      description: app Api Documentation
      version: 1.0.0
      termsOfServiceUrl: https://www.cnblogs.com/super-admin/
      contact:
        name: zhaozhen02
        url: https://www.cnblogs.com/super-admin/
        email: zhaozhen02@qq.com

    4:访问地址

    http://localhost:8080/swagger-ui.html

    5:添加文档内容

    在完成了上述配置后,其实已经可以生产文档内容,但是这样的文档主要针对请求本身,描述的主要来源是函数的命名,对用户并不友好,我们通常需要自己增加一些说明来丰富文档内容。

    Swagger使用的注解及其说明:

    @Api:用在类上,说明该类的作用。

    @ApiOperation:注解来给API增加方法说明。

    @ApiImplicitParams : 用在方法上包含一组参数说明。

    @ApiImplicitParam:用来注解来给方法入参增加说明。

    @ApiResponses:用于表示一组响应

    @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息

        l   code:数字,例如400

        l   message:信息,例如"请求参数没填好"

        l   response:抛出异常的类   

    @ApiModel:描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)

        l   @ApiModelProperty:描述一个model的属性

    注意:@ApiImplicitParam的参数说明:

    paramType:指定参数放在哪个地方

    header:请求参数放置于Request Header,使用@RequestHeader获取

    query:请求参数放置于请求地址,使用@RequestParam获取

    path:(用于restful接口)-->请求参数的获取:@PathVariable

    body:(不常用)

    form(不常用)

    name:参数名

    dataType:参数类型

    required:参数是否必须传

    true | false

    value:说明参数的意思

    defaultValue:参数的默认值

     

    6:参考

    http://blog.didispace.com/springbootswagger2/

    http://blog.csdn.net/jia20003/article/details/50700736

    Swagger官网 :http://swagger.io/

    Spring Boot & Swagger UI : http://fruzenshtein.com/spring-boot-swagger-ui/

    Github:https://github.com/swagger-api/swagger-core/wiki/Annotations

  • 相关阅读:
    02 . Vue入门基础之条件渲染,列表渲染,事件处理器,表单控件绑定
    iptables防火墙简介,原理,规则编写,做网络防火墙,常见案例
    Go之发送钉钉和邮箱
    Jumpserver简介,部署及使用
    01 . Go语言实现SSH远程终端及WebSocket
    KVM简介,安装及常见使用,维护详解
    05 . Gin+Vue开发一个线上外卖应用(Session集成及修改用户头像到Fastdfs)
    04 . Gin+Vue开发一个线上外卖应用(用户名密码和图形验证码)
    03 . Gin+Vue开发一个线上外卖应用(用户数据创建,插入,跨域处理)
    02 . Go之Gin+Vue开发一个线上外卖应用(集成第三方发送短信和xorm生成存储数据库表)
  • 原文地址:https://www.cnblogs.com/super-admin/p/10156165.html
Copyright © 2011-2022 走看看