如今业界对开发部署UI项目的趋势是前后端分离,也就是说,一部分人只做前端(HTML/CSS/Javascript等),一部分人只做后端(也叫服务器端)。这种开发模式下,通常前后端各自有各自的开发流程、构建和测试工具等。同时,UI前端需要和后端协调好API等接口,然后前端使用Mock server等来模拟后台提供的数据。但是,这种模式下,就有前后端的集成的问题:常常在开发最后阶段,需要前后端进行集成时,才发现一开始约定好的数据结构已经发生变化——即前后端感知到接口变化的周期太长。而且这种API接口、数据结构的变化往往还是不可避免的。
要解决这个问题,以往的项目开发中,通常的解决办法是,在项目组开发人员之间预先约定和规范,通过持续集成契约接口测试来避免。当然很显然仅仅依靠纪律是不够的,同时在代码还未完善时进行持续集成测试往往事倍功半,因此,我们还需要借助工具帮助我们提高约定API接口的效率。而Swagger就是这么一个工具,可以帮助我们实现“前后端分离”“及时协商、尽早解决”。
根据官网的描述, 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。它允许使客户端和文件系统作为服务器以同样的速度来更新。
是一个AngularJs开源项目(建议用Chrome浏览器打开官网),Swagger有如下几个重要部分:
- ,基于YAML语法定义RESTful API,然后自动生成API文档。
- ,自动生成不同客户端语言的代码。
其中,swagger-editor可以通过官网在线查看Demo打开。