OCF技术原理及物联网程序开发指南
上QQ阅读APP看书,第一时间看更新

1.5 Swagger

Swagger与RAML相比,RAML解决的是设计阶段的问题,而Swagger则是侧重解决现有API的文档问题,它们最大的不同是RAML需要单独维护一套文档,而Swagger则是通过一套反射机制从代码中生成文档,并且借助Ajax直接在文档中对API进行交互。因为代码与文档是捆绑的,所以在迭代代码的时候,就能方便地将文档也更新了,不会出现随着项目推移代码与文档不匹配的问题,另外,Swagger是基于JSON进行文档定义的。

Swagger API框架用于管理项目中的API接口,是当前流行的API接口管理工具。Swagger是一个开源框架(Web框架),功能强大,UI界面友好,支持在线测试。

Swagger的目标是对REST API定义一个标准的与语言无关的接口,可让人和计算机无须访问源码、文档或网络流量监测,就可以发现和理解服务。通过Swagger进行正确定义,用户可以理解远程服务,并使用最少实现逻辑与远程服务进行交互。与底层编程所实现的接口类似,Swagger消除了调用服务时可能存在的猜测。

Swagger是一组开源项目,主要项目如下。

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

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

Swagger-JS:用于JavaScript的Swagger实现。

Swagger-Node-Express:Swagger模块,用于Node.js的Express Web应用框架。

Swagger-UI:一个不依赖HTML、JavaScript和CSS的集合,可以为Swagger兼容API动态生成优雅文档。

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

Swagger-Editor:可让使用者在浏览器里以YAML格式编辑Swagger API规范,并实时预览文档;可以生成有效的Swagger JSON描述,并用于所有Swagger工具(代码生成、文档等)中。