FastAPI的发展历史
参考:https://zhuanlan.zhihu.com/p/710831974
FastAPI 于 2019 年发布,由 Sebastian Ramirez 创建。他是 Pydantic 框架的创建者,也是多个开源项目的贡献者。
FastAPI 的设计初衷是为了解决 Python Web 框架在数据类型验证和文档生成方面的问题。它使用了 Python 类型注解和 Pydantic 模型,并采用 async/await 异步语法来提高性能。
2020 年 6 月,FastAPI 发布了稳定版本 1.0。
FastAPI 具有诸多优势,例如性能快速、基于标准 Python 类型标注、代码量少、编写快速、支持多种数据格式、自动生成 API 文档、具有 Docker 和 Kubernetes 的现成支持、适用于多种访问和安全性实用程序,以及与 Starlette 和 Pydantic 等代码生态系统集成等。
在 FastAPI 之前,已经存在一些相关的框架和工具,这些也为 FastAPI 的发展提供了一定的启发和借鉴,例如:
- Django:是流行的 Python 框架,与关系数据库结合紧密,用于构建大型系统,其创建目的是在后端生成 HTML,而不是创建现代前端或与其通信的其他系统使用的 API。
- Django REST framework:用于构建 Web API 以改善 Django 的 API 功能,是第一个自动生成 API 文档的框架,自动生成 API 接口文档这一特性启发了 FastAPI 的诞生。该框架的作者 Tom Christie 也创造了 Starlette 和 Uvicorn,而 FastAPI 正是建立在 Starlette 和 Uvicorn 之上。
- Flask:是轻量级框架,不包括数据库集成和许多附带功能,其简单性和灵活性允许使用 NoSQL 数据库作为主数据存储,各个模块之前解耦,可通过扩展提供所需功能。Flask 的简单性、成为微框架、拥有简单易用的路由系统等特点给了 FastAPI 启发。
- Requests:是一个与 API(作为客户端)进行交互的库,具有简单直观的设计、易用性,并具有合理的默认值和强大的可自定义性。FastAPI 从 Requests 中获得启发,拥有了简单直观的 API、直接使用 HTTP 方法名称、具有合理默认值及强大自定义功能等特性。
- Swagger/OpenAPI:API 文档的标准,FastAPI 采用开放标准而非自定义架构,并集成基于标准的用户界面工具,如 Swagger UI 和 ReDoc。
- Marshmallow:提供了数据序列化和验证功能,使用代码来定义提供的数据类型和验证的 schema,且验证是自动化的。
- Webargs:用于解析从前端发送的请求数据,具有对输入请求数据的自动验证功能。
- APISpec:可作为很多框架的插件,通过在 Python 的文档字符串内部使用 YAML 格式描述为每个函数自动生成文档,并生成 OpenAPI 的 schemas。