狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 !

Swagger学习笔记

课程目标

  • 了解Swagger的概念及作用
  • 掌握在项目中集成Swagger自动生成API文档

Swagger简介

前后端分离  (前后端相对独立且松耦合)

  • 前端-->前端控制层 , 视图层
  • 前端和后端利用API接口进行相应协作(数据可能是json也可能是xml等等的...)
  • 后端-->后端控制层 , 服务层 , 数据访问层

问题 ?

  • 前后端集成------CI/CD

    • 前端或后端无法做到 "及时协商 , 尽早解决" 最终导致问题集中爆发 .

解决方案

  • 首先定义schema , 并实时跟踪最新的API , 降低集成风险 .

Swagger

  • Restful API文档在线自动生成器-->API文档与API定义同步更新
  • 直接运行 , 在线测试API
  • 支持多种语言 (如 : java , php 等等)
  • 官网 : https://swagger.io/

Spring集成Swagger -->springfox

  • springfox-swagger2
  • swagger-springmvc

项目中集成Swagger

项目环境 : JDK1.8 , Spring4.1.7 , Mybatis3.2.2

Spring MVC 集成springfox-swagger2构建Restful API

  • Maven依赖

    • springfox-swagger2
    • springfox-swagger-ui
    • guava
    • mapstruct-jdk8
    • jackson
      • jackson-core
      • jackson-databind
      • jackson-annotations

集成配置步骤

  1. 在pom.xml文件中添加Swagger2相关的依赖
  2. Swagger2配置类 : SwaggerConfig . java (官网下载)
    • @ComponentScan : 设置Swagger 扫描包
    • @EnableSwagger2 : 使Swagger2生效
    • @Configuration : 自动在本类上下文加载一些环境变量信息
      package dcc.core;
      
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      import org.springframework.web.servlet.config.annotation.EnableWebMvc;
      
      import springfox.documentation.builders.ApiInfoBuilder;
      import springfox.documentation.builders.RequestHandlerSelectors;
      import springfox.documentation.service.ApiInfo;
      import springfox.documentation.spi.DocumentationType;
      import springfox.documentation.spring.web.plugins.Docket;
      import springfox.documentation.swagger2.annotations.EnableSwagger2;
      
      @Configuration //声明该类为配置类
      @EnableSwagger2 //声明启动Swagger2
      @EnableWebMvc //声明启动mvc
      public class SwaggerConfig{
          @Bean
          public Docket customDocket() {
              return new Docket(DocumentationType.SWAGGER_2)
                      .apiInfo(apiInfo())
                      .select()
                      .apis(RequestHandlerSelectors.basePackage("dcc"))//扫描的包路径
                      .build();
          }
      
          private ApiInfo apiInfo() {
              return new ApiInfoBuilder()
                      .title("DCC API接口")//文档说明
                      .version("1.0.0")//文档版本说明
                      .build();
          }
      }
  3. Spring MVC配置文件
    <!-- 激活@controller模式 -->
    <mvc:annotation-driven />
    
    <!-- 开启静态文件 默认拦截器 -->
    <mvc:default-servlet-handler/>
    
    添加指定扫描 : < context:component-scan />

具体运用

API加入Swagger

  • 通过在API上添加注解实现 , API文档的同步效果
  • @Api --> ( 表名可供Swagger展示的接口类 : 用在类上面 )
  • @ApiOperation --> ( 描述API方法 : 用在方法上面 )
  • @ApiParam --> ( 单个参数描述 )
  • @ApiModel --> ( 用对象接收参数 : 用在类上面 )
  • @ApiModelProperty --> ( 用对象接收参数时 , 描述对象的一个字段 ; 用在属性上面 )

Nginx配置

  • 访问Swagger界面

    • http://IP:port /{context-path}/swagger-ui.html
  • 问题
    • 生成环境下 , 只开放80端口 , 通过Tomcat无法访问Swagger
  • 解决方案
    • 通过 Nginx 进行Swagger 的访问 (nginx.conf)

      • 注释掉 server节点下的 root . 即前端静态工程
      • 注释掉 location 这个节点
    • http://IP/{context-path}/swagger-ui.html

Swagger学习笔记的更多相关文章

  1. webapi swagger学习笔记

    版权声明:部分摘抄其他博主朋友的博文内容,旨在分享学习,如给您带来不便,请原谅.原文地址 http://www.cnblogs.com/yanweidie/p/5709113.html#_label3 ...

  2. golang学习笔记7 使用beego swagger 实现API自动化文档

    golang学习笔记7 使用beego swagger 实现API自动化文档 API 自动化文档 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/doc ...

  3. ASP.NET Core 2 学习笔记(十三)Swagger

    Swagger也算是行之有年的API文件生成器,只要在API上使用C#的<summary />文件注解标签,就可以产生精美的线上文件,并且对RESTful API有良好的支持.不仅支持生成 ...

  4. SpringBoot学习笔记:Swagger实现文档管理

    SpringBoot学习笔记:Swagger实现文档管理 Swagger Swagger是一个规范且完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务.Swagger的目标是对RE ...

  5. golang学习笔记5 用bee工具创建项目 bee工具简介

    golang学习笔记5 用bee工具创建项目 bee工具简介 Bee 工具的使用 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/instal ...

  6. Angularjs2 学习笔记

    angularjs2 学习笔记(一) 开发环境搭建   开发环境,vs2013 update 5,win7 x64,目前最新angular2版本为beta 17 第一步:安装node.js 安装nod ...

  7. 从零开始搭建.NET Core 2.0 API(学习笔记一)

    从零开始搭建.NET Core 2.0 API(学习笔记一) 一. VS 2017 新建一个项目 选择ASP.NET Core Web应用程序,再选择Web API,选择ASP.NET Core 2. ...

  8. kratos微服务框架学习笔记一(kratos-demo)

    目录 kratos微服务框架学习笔记一(kratos-demo) kratos本体 demo kratos微服务框架学习笔记一(kratos-demo) 今年大部分时间飘过去了,没怎么更博和githu ...

  9. 【转载】Java学习笔记

    转载:博主主页 博主的其他笔记汇总 : 学习数据结构与算法,学习笔记会持续更新: <恋上数据结构与算法> 学习Java虚拟机,学习笔记会持续更新: <Java虚拟机> 学习Ja ...

随机推荐

  1. Canvas入门到高级详解(上)

    神奇的 canvas--AICODER 全栈培训 IT 培训专家 一.canvas 简介 1.1 什么是 canvas?(了解) 是 HTML5 提供的一种新标签 <canvas>< ...

  2. 导出表结构到Excel 生成代码用

    导出表结构到Excel ,统一维护,生成代码用 SELECT C.TABLE_NAME,CC.COMMENTS,C.COLUMN_NAME,C.DATA_TYPE, CASE WHEN C.DATA_ ...

  3. 开源Web自动化测试工具Selenium IDE

    Selenium IDE(也有简写SIDE的)是一款开源的Web自动化测试工具,它实现了测试用例的录制与回放. Selenium IDE目前版本为 3.6 系列,支持跨浏览器运行,所以IDE的UI从原 ...

  4. SparkThriftServer 源码分析

    目录 版本 起点 客户端--Beeline 服务端 Hive-jdbc TCLIService.Iface客户端请求 流程 SparkThrift 主函数HiveThriftServer2 Thrif ...

  5. 【分享】Vue 资源典藏(UI组件、开发框架、服务端、辅助工具、应用实例、Demo示例)

    Vue 资源典藏,包括:UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和 ...

  6. c++ 格式字符串说明

    C++的格式化字符串经常用作格式化数字的输出.字符串合并和转换等等很多场合. 1. 格式化规定符 ━━━━━━━━━━━━━━━━━━━━━━━━━━ 符号                  作用 ─ ...

  7. 24小时学通Linux内核之电源开和关时都发生了什么

    说实话感觉自己快写不下去了,其一是有些勉强跟不上来,其二是感觉自己越写越差,刚开始可能是新鲜感以及很多读者的鼓励,现在就是想快点完成自己制定的任务,不过总有几个读者给自己鼓励,很欣慰的事情,不多感慨了 ...

  8. CentOS上安装配置Ruby on Rails

    0.install sublime editor(optional) ref:http://www.tecmint.com/install-sublime-text-editor-in-linux/ ...

  9. Android Framework源码反编译

    部分设备crash在Framework代码,但又和开源代码对应不上,这时需要拉取设备里面的Framework并反编译源代码排查问题. 1.获取Framework文件: adb pull /system ...

  10. error: cannot lock ref 'refs/remotes/origin/master': unable to resolve reference 'refs/remotes/origin/master': reference broken...

    之前在自己的项目中添加了一个分支,然后做了一些操作,比如同步本地的分支情况到远程仓库中,然后在远程仓库中完成分支合并,以及 Pull request 等等操作,后来,在本地仓库中进行 git fetc ...