阅读本文大概需要 6.6 分钟。
原文:https://fastapi.tiangolo.com/alternatives/
作者:tiangolo,FastAPI 的创作者,github star 10.1k
翻译:somenzz
侵删
APISpec
Marshmallow 和 Webargs 提供以插件形式提供验证,解析和序列化。但文档这块缺失,然后 APISpec 诞生了。APISpec 可做为很多框架的插件(也是做为 Starlette 插件)。
它的工作方式是,在 Python 的文档字符串内部使用 YAML 格式的描述来为每一个函数自动生成文档。它会生成 OpenAPI 的 schemas。这也是它工作在 Flask, Starlette, Responder 等框架上的方式。
缺点是,我们又必须在 Python 的文档字符串使用 YAML 语法,细微的差别可能导致一些错误。如果我们修改参数或 Marshmallow 的 schema,却忘了还修改 YAML 文档字符串,生成的模式将被废弃。
APISpec 和 Marshmallow 的作者是同一个开发者。
启发 FastAPI 地方:
支持API的开放式标准。
Flask-apispec
这是一个 Flask 插件,和 Webargs, Marshmallow, APISpec 联系在一起。
APISpec使用Webargs 和Marshmallow生产的信息来生成 OpenAPI 的 schemas。
这是一个伟大的工具,非常低估。它应该是比许多 Flask 插件更受欢迎。这可能是由于它的文档过于简洁、抽象。
它解决了无需在 Python文档字符串内编写YAML(另一种语法)。
在 FastAPI 创建之前,Flask, Flask-apispec, Marshmallow ,Webargs 的联合是我经常用到的后端技术栈。使用这些框架,我们创建了几个 Flask 的全栈生成器。以下是是我和几个外部团队一直到现在都使用的主要技术栈:
https://github.com/tiangolo/full-stack
https://github.com/tiangolo/full-stack-flask-couchbase
https://github.com/tiangolo/full-stack-flask-couchdb
启发 FastAPI 地方:
自动生成的 OpenAPI 模式,使用相同的代码定义序列化和验证。
NestJS (and Angular)
这很跟 Pyth