利用 Flask 这一轻量级且灵活的 Web 框架,我们在 Python 中构建 RESTful API 的过程可以变得十分简便。为了给 API 添加全面的文档和交互功能,Flasgger 是一个强大的工具,它能将 Swagger UI 无缝集成到 Flask 中。这篇文章将引导我们完成使用 Flask 和 Flasgger 实现 REST API 的全过程。
什么是 Flasgger?
Flasgger 是一个 Python 库,旨在简化和促进 Flask Web 应用程序的 Swagger(OpenAPI)文档的创建与管理。Swagger 是一个用于描述 API 的框架,它使用一种通用的语言,使得人类和计算机都能在无需访问源代码的情况下理解 Web 服务的功能。
Flasgger 的主要特性包括:
- 易于集成:Flasgger 与 Flask 应用程序无缝集成,允许开发者只需极少的配置即可添加 API 文档。
- 自动文档生成:它可以直接从 Flask 路由和视图函数自动生成 API 文档,利用文档字符串和其他元数据即可完成。
- Swagger UI:Flasgger 提供了内置的 Swagger UI,这是一个交互式的 Web 界面,允许用户探索和测试 API 端点。
- 自定义配置:开发者可以通过定义模式、在文档字符串中直接添加参数、响应和示例,或使用 YAML 文件来自定义文档。
- 验证功能:它支持根据定义的模式对请求进行验证,以确保传入的请求符合预期的格式和约束。
使用 Swagger 进行首个 API 开发
下面我们将通过一个分步指南,了解如何使用 Flask Web 框架在 Python 中进行“代码优先”的 API 开发并集成 Swagger:
设置环境
- 确保系统中已预装 Python。
- 在命令提示符中安装 Flask 和 Flask-RESTful 等必需的库,如下所示。
pip install flask
pip install Flask-RESTful
pip install flasgger
创建 Flask 应用
创建一个新的 Python 文件,命名为 app.py。
Python
CODEBLOCK_1e9a9a68
输出:
如图所示运行此文件:
python app.py
然后应用将在本地主机 http://127.0.0.1:5000 上运行。打开该地址,输出将如下图所示。
!s未集成 Swagger 的 Flask API
集成 Swagger
我们对 Swagger 配置进行了扩展,增加了标题并将 UI 版本设置为 3,以获得更现代的外观。
Python
CODEBLOCK_8e18db39
输出
创建另一个 API
我们添加了一个新类 Items,它继承自 Resource。这个类用于处理 /items 端点。
**Items**类:- 这个类处理两种 HTTP 方法:INLINECODEc9ffc102 和 INLINECODEb19e9f93。
get方法返回项目列表。post方法向列表中添加一个新项目。为了简单起见,该项目会在响应中返回;在实际应用中,它通常会添加到数据库或其他数据存储中。
Python
“
from flask import Flask, request
from flask_restful import Api, Resource
from flasgger import Swagger, swag_from
app = Flask(name)
api = Api(app)
Configuring Swagger
app.config[‘SWAGGER‘] = {
‘title‘: ‘My API‘,
‘uiversion‘: 3
}
swagger = Swagger(app)
class Welcome(Resource):
@swag_from({