初次接触Swagger是在2017年5月,当时公司正好要对整套系统架构进行重新设计,有同事推荐用这个技术框架来规范后台接口的API文档。当时因为架构重构,涉及改造的技术点太多,一时也就没太多精力,把Swagger暂时放下了。对于API文档我们就自己定义了一个模板,统一要求开发人员把文档写在tower上了。

现在回头来看,存在这么几个问题:

1. 文档编写及修改的及时性不够,由于API在开发及测试过程中经常会有调整,相应的文档不能及时得到修改。

2. 文档的规范性需要人为的检查来约束,增大了项目管理的工作量

3. 前端和测试人员对文档的理解有一个过程,有时需要频繁和后台开发人员进行交流,产生了一定的交流成本。

由于现在的互联网项目都是前后端合作的形式,前端和后端的唯一联系,变成了API接口;API文档变成了前后端开发人员联系的纽带,变得越来越重要,在这样的情况下,我又把注意力再次投向了Swagger。经过几天研究,大致有了比较清晰的认识,准备写几篇博客对这个技术进行一下说明。

Swagger这个单词做形容词是 “炫耀的;时髦的”  这样一个意思。官网地址:https://swagger.io,官网对其项目的定义是:

Swagger is the world’s largest framework of API developer tools for the OpenAPI Specification(OAS), enabling development across the entire API lifecycle, from design and documentation, to test and deployment.                

中文意思是:Swagger是一个大型的API开发者的工具框架,该框架提出了一个编写OpenAPI的规范(命名为OAS),并且Swagger可以跨整个API生命周期进行开发,从设计和文档到测试和部署。

Swagger这个框架的原理:框架提出了一个文档规范OAS,且提供了相应的可视化编辑器可以编辑这个文档以及对文档格式进行校验,文档的存储格式可是XML或者JSON形式的文件(后面简称API元文件),围绕着API元文件框架提供了对API元文件进行可视化展示的工具,展示的时候可以自定义模板,展示的方式是浏览器的网页形式(也就是一个 可交互的web系统),并且支持对AIP接口的在线的交互测试。同时社区还开发了一些集成框架,以便让Swagger能和例如SpringMVC这样的框架很好的整合,通过在Controller上写注解就可以自动生成相应的API文档。更有意思的是Swagger还提供了根据API元文件生成客户端调用代码和服务端Stub代码的功能。

Swagger框架从宏观上来看,我个人觉得可以分为三部分:

  • 提供了一个编写API文档的规范 ,称为OAS ,在规范中明确API的格式和一些编写要素
  • 提供相关的工具,对API文档的编写提供辅助。主要是这么几个项目 Swagger Editor、Swagger UI、Swagger Codegen、Swagger Inspector。
  • 提供对各种流行语言和框架的集成,例如集成SpringMVC 的 springfox 框架

最新文章

  1. JS 获取浏览器和屏幕宽高信息
  2. eclipse设置显示代码行数(转)
  3. Colorful tree
  4. 屏幕截图、录像FastStone Capture
  5. <转>关闭 程序崩溃时 windows 正在检查该问题的解决方案
  6. 新工程软连接到原来的工程的out目录后,可以直接编译模块
  7. 杭电ACM2058--The sum problem
  8. 16_AOP入门准备_动态代理模式
  9. Win8 +PHP+IIS配置
  10. 原生拖拽,拖放事件(drag and drop)
  11. Swift - 访问通讯录联系人(使用纯代码实现)
  12. Qt Quick 组件和动态创建的对象具体的解释
  13. "malloc: * error for object 0x17415d0c0: Invalid pointer dequeued from free list * set a breakpoint in malloc_error_break to debug";
  14. 2017ccpc哈尔滨区域赛H
  15. Zookeeper学习笔记3
  16. Bellman-Ford算法——为什么要循环n-1次?图有n个点,又不能有回路,所以最短路径最多n-1边。又因为每次循环,至少relax一边所以最多n-1次就行了!
  17. 渲染Web视图
  18. Zookeeper 基本应用及盲点
  19. 字符串方法 split() & replace()
  20. libgdx学习记录7——Ui

热门文章

  1. Reference-TMB
  2. urllib 学习二
  3. Hbase学习04
  4. 【C#】使用bat文件安装卸载Window服务
  5. linux环境下遇到的所有问题
  6. Nginx 简单安装
  7. Linux 内核里的数据结构:双向链表
  8. Java高并发秒杀API之业务分析与DAO层
  9. HTML第四耍 超链接标签
  10. MapReduce实现词频统计