Module 02 · Web API Essentials: REST API and GraphQL
Documenting and Testing REST APIs with Swagger使用 Swagger 文档化和测试 REST API
API 文档与 Swagger
API 指定了一个接口,连接不同的系统,并为其提供一致的通信。
- API 文档: 类似于一个参考手册,包含有关有效使用和集成系统的说明。
- Swagger 的作用: Swagger 通过运行 OpenAPI 规范来确保您符合指南,从而节省编写 API 文档的时间。
- 机器可读: Swagger 允许您描述 API 的结构,以便机器可以读取它们。
- 自动生成 UI: 利用 API 的结构,Swagger 会自动构建引人入胜的 UI 和交互式 API 文档。
- 这种结构定义在一个遵循 OpenAPI 规范的 JSON 或 YAML 文件中。
OpenAPI 规范(OAS)
最初,API 并非为自助式消费而设计。OpenAPI 规范定义了一个标准、语言无关的 RESTful API 接口。
OAS 的核心特性
- 语言无关: 规范是语言无关的,并且是人机可读的。
- 发现能力: 允许个人和计算机发现和理解服务的能力,而无需访问源代码、额外文档或检查网络流量。
OAS 定义的内容
OAS 定义了您的 API 的所有关键方面:
- 操作: 您的 API 支持的所有操作。
- 参数与返回: 所需的参数和预期的返回。
- 认证: 所需的 API 认证。
- 附加信息:
- 服务条款(terms of service)。
- 联系信息(contact information)。
- 暴露 API 的许可信息(license information)。
将 Swagger UI 集成到 Flask 应用
Flask 使 Python 函数可以暴露为 API。Flask Swagger UI 通过允许您描述和可视化 REST API 来增强其功能。
1. 安装与导入
- 安装: 使用
pip install Flask-swagger-ui命令将 Swagger UI 添加到您的 Flask 应用程序中。

- 导入: 需要导入
swagger_ui_blueprint来帮助您使用 Flask 创建 Swagger UI。

2. 配置与注册
- 基本配置: 定义基本配置,包括:
- Swagger 可用路径: 在本例中为
products/docs。 - Swagger 文件服务位置: 第二个参数显示 Swagger 文件(
swagger.json)的服务位置。 - Swagger 名称。
- Swagger 可用路径: 在本例中为
- 注册蓝图: 需要使用
app.register_blueprint()向 Flask 注册此蓝图。
3. 暴露 Swagger JSON 文件
swagger.json文件包含了 API 的定义和特性。- 您需要暴露一个路由,用于提供这个静态的
swagger.json文件。
4. 定义 Swagger JSON 内容
- Swagger JSON 文件需要包含一些基本配置。
- 示例配置: 创建 Products 微服务 API 的 Swagger 定义,并提供:
info部分(例如联系信息、服务条款等)。- 模型(Model)和路径(Path)用于获取产品列表。
- 定义 Product 对象的属性。

使用 Swagger UI 进行测试
一旦有了 API 定义和 Swagger UI,您就可以利用其核心优势:
- API 测试: 您可以使用 UI 直接测试您的 API,这是使用 Swagger 的关键优势。
- 详细信息: 它允许消费者获取有关您的 API 的更多详细信息、支持的功能、请求和响应。
- 可视化: UI 会显示产品信息部分的内容以及唯一可用的方法(用于检索所有产品的 GET 请求)。
- 执行: 您可以直接执行该端点并查看结果(在本例中为产品列表)。


总结
- Swagger 帮助您文档化您的 API。
- OpenAPI 规范是表示您的 API 的标准方式。
- Swagger 提供了一个测试您的 API 的机制。