1、简介
FastAPI是一个用于构建API的高效web框架,使用python3.6+,并基于标准的Python类型语法。
2、特性
- 快速:可与NodeJS和Go比肩的极高性能(Starlette 与Pydantic)。是最快的python web框架之一;
- 高效编码:提高2-3倍开发速度;
- 更少bug:减少约四成的人为导致的错误;
- 智能:极佳的编辑器支持。自动补全能力强大,减少调试时间;
- 简单:易于学习和使用,阅读文档的时间更短;
- 简短:代码重复最小化。通过不同的参数声明实现丰富功能。
- 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。
2.1、基于开放标准
- 用于创建 API 的 OpenAPI 包含了路径操作,请求参数,请求体,安全性等的声明。
- 使用 JSON Schema (因为 OpenAPI 本身就是基于 JSON Schema 的)自动生成数据模型文档。
- 经过了缜密的研究后围绕这些标准而设计。并非狗尾续貂。
- 这也允许了在很多语言中自动生成客户端代码。
2.2、自动生成文档
交互式 API 文档以及具探索性 web 界面。因为该框架是基于 OpenAPI,所以有很多可选项,FastAPI 默认自带两个交互式 API 文档。
另外的 API 文档:ReDoc
2.3、简介
任何类型都有合理的默认值,任何和地方都有可选配置。所有的参数被微调,来满足你的需求,定义成你需要的 API。
但是默认情况下,一切都能“顺利工作”。
2.4、验证
- 校验大部分(甚至所有?)的 Python 数据类型,包括:
- JSON 对象 (dict).
- JSON 数组 (list) 定义成员类型。
- 字符串 (str) 字段, 定义最小或最大长度。
- 数字 (int, float) 有最大值和最小值, 等等。
- 校验外来类型, 比如:
- URL.
- Email.
- UUID.
- …及其他.
所有的校验都由完善且强大的 Pydantic 处理。
2.5、依赖注入
fastapi具有非常强大的依赖注入系统
- 依赖也可以有依赖,可以创建一个层级或者“图”依赖;
- 所有自动化处理都由框架完成;
- 所有依赖关系都可以从请求中获取数据,并且增加了路径操作约束和自动文档生成;
- 在依赖项中被定义的路径操作也会自动验证;
- 支持复杂的用户身份认证系统、数据库连接等;
- 不依赖数据库、前端等;但是与他们的集成非常简单。