接口管理框架Swagger
接口管理框架 Swagger
简介
Swagger 是一个接口管理工具,其开源的核心功能主要有:
功能模块 | 作用 |
---|---|
Specification | 规范定义 |
swagger-ui | 交互式的在线文档 |
swagger-editor | 交互式的 api 规范编写与文档界面生成工具 |
swagger-codegen | 代码生成工具 |
而这些功能模块,即可满足一个接口管理工具所需要的所有功能
应用场景
阶段 | 交付 |
---|---|
设计阶段 | 提供设计工具和规范 |
研发阶段 | 提供 stub 环境联调和客户端 sdk 基础测试用例 |
测试阶段 | 生成测试脚本 联调环境 |
交付阶段 | 接口文档/客户端 sdk |
在接口管理体系中,为了满足在每个阶段能够产出对应的交付,一个接口管理的工具就需要具备以下的功能:
- 接口文档规范。
- 根据接口文档生成
stub
与mock
服务(联调环境)。 - 自动生成测试脚本。
- 能够持续的维护所有的接口文档。
而接口管理工具 Swagger 就具备以上所有的功能。
实战演练
接下来就以 Swagger 为例,来看一下每个阶段的流程,它是怎么做的。
Specification
设计阶段需要提供设计工具和规范,而 Swagger 的 Specification 就是为此而设计的。
OpenAPI 规范 (OAS) 定义了一个与语言无关的标准 HTTP API 接口,允许人类和计算机发现和理解服务的功能,而无需访问源代码、文档或通过网络流量检查。 如果定义正确,消费者可以使用最少量的实现逻辑来理解远程服务并与之交互。
官网地址: https://swagger.io/specification/
swagger-ui
Swagger UI 允许任何人(无论是您的开发团队还是最终消费者)可视化 API 的资源并与之交互,而无需任何实现逻辑。 它是根据 OpenAPI(以前称为 Swagger)规范自动生成的,并带有可视化文档,使后端实现和客户端使用变得轻松。
以上是 Swagger 官网对于 swagger-ui 的介绍,其核心的功能点主要在于接口文档的可视化。
- 官网地址:https://swagger.io/tools/swagger-ui/
- 测试人社区版:https://swagger.hogwarts.ceshiren.com/
swagger-editor
swagger-editor 是 swagger 最核心的功能模块,它具有以下功能:
- 根据定义好的数据结构,生成可视化文档。
- 动态调试功能,模拟发送请求。
Generate Server
点击Generate Server
可以选择不同的语言,会自动下载不同的 server 文件夹,此文件夹主要由以下几个部分组成:
类型 | 内容 |
---|---|
controllers | 接口层 |
models | 业务模型 |
test | 接口测试用例 |
把接口文档生成服务器文件,导出一个压缩包,接口文档生成 java、js 等服务器文件。可以将生成的文件部署在本地环境,并通过修改源码的方式,生成 stub 或者 mock 服务。辅助前端开发的同学构造模拟不同的服务数据。
Generate Client
点击Generate Client
可以选择不同的语言,会自动下载不同的 client 文件夹,此文件夹主要由以下几个部分组成:
类型 | 内容 |
---|---|
docs | 自动生成的接口文档 |
api | 接口信息 |
models | 业务模型 |
tests | 测试用例 |
而 Generate Client 如此的设计是为了满足用户端,也就是接口的调用方的需求。作为一个测试工程师,可以根据业务模型和接口信息去拼接业务流程,非常简便的即可完成接口测试的整个过程。
而其多语言的设计,也可以满足不同技术栈的测试工程师的不同需求。当然这样的缺点其实也是显而易见的,就是其代码定制性比较弱,难以和已有的代码共存。Swagger 针对此需求,也有相应的解决方案。即为使用其 codegen 模块。
到这里,可能很多同学还是容易把 Client
和 Server
的使用混淆,所以我这边会输出一个对比的表格,让大家更好的理解它们的使用
类型 | Server | Client |
---|---|---|
应用场景 | Mock Stub 接口服务给前端开发使用 | 自动给测试人员生成接口测试用例 |
是否有接口文档 | 无 | 有 |
使用方式 | 当做一个正常的后端服务部署 | 类似于接口自动化测试的脚本调用,无需部署 |
是否支持多语言 | 支持 | 支持 |
总结
- swagger-ui
- swagger-editor
- Generate Client