FastAPI上⼿指南(⼀):框架简介与安装
FastAPI
⼀、FastAPI简介
FastAPI是⾼性能的web框架。他的主要特点是:
- 快速编码
- 减少⼈为bug
-
直观
- 简易
- 具有交互式⽂档
- 基于API的开放标准(并与之完全兼容):OpenAPI(以前称为Swagger)和JSON Schema。
FastAPI 站在巨⼈的肩膀上的框架,这个巨⼈就是指 Flask 框架。
FastAPI 从语法上和 Flask ⾮常的相似,有异曲同⼯之妙。
⼆、FastAPI 特性
1.基于开放标准
⽤于创建 API 的 OpenAPI 包含了路径操作,请求参数,请求体,安全性等的声明。
使⽤ JSON Schema (因为 OpenAPI 本⾝就是基于 JSON Schema 的)⾃动⽣成数据模型⽂档。
经过了缜密的研究后围绕这些标准⽽设计。并⾮狗尾续貂。
⽣成客户端代码。
这也允许了在很多语⾔中⾃动⽣成客户端代码
2.⾃动⽣成⽂档
交互式 API ⽂档以及具探索性 web 界⾯。因为该框架是基于 OpenAPI,所以有很多可选项,FastAPI 默认⾃带两个交互式 API ⽂档。⼀个是docs,⼀个是redoc
--Swagger UI,可交互式操作,⽤于测试,能在浏览器中直接调⽤和测试你的 API 。
--API ⽂档:ReDoc
三、编辑器⽀持
整个框架都被设计得易于使⽤且直观,所有的决定都在开发之前就在多个编辑器上进⾏了测试,来确保最佳的开发体验。在最近的 Python 开发者调查中,我们能看到 被使⽤最多的功能是"⾃动补全"。
FastAPI 框架就是基于这⼀点的。任何地⽅都可以进⾏⾃动补全。
整个 FastAPI
在这⾥,你的编辑器可能会这样帮助你
四、类型验证与⾝份校验
数据类型,包括:
校验⼤部分(甚⾄所有?)的 Python 数据类型
JSON 对象 (dict).
JSON 数组 (list) 定义成员类型。
字符串 (str) 字段, 定义最⼩或最⼤长度。
数字 (int, float) 有最⼤值和最⼩值, 等等。
校验外来类型, ⽐如:
URL.
Email.
UUID.
.
..及其他.
Pydantic 处理。
所有的校验都由完善且强⼤的 Pydantic
安全性及⾝份验证
ant安装包集成了安全性和⾝份认证。杜绝数据库或者数据模型的渗透风险。
OpenAPI 中定义的安全模式,包括:
HTTP 基本认证。
JWT tokens)。在 OAuth2 with JWT查看教程。
OAuth2 (也使⽤ JWT tokens
OAuth2
API 密钥,在:
请求头。
查询参数。
Cookies, 等等。
session cookie)的所有安全特性。
加上来⾃ Starlette(包括 session cookie
所有的这些都是可复⽤的⼯具和组件,可以轻松与你的系统,数据仓库,关系型以及 NoSQL 数据库等等集成。
五、Starlette 特性
FastAPI 和 Starlette 完全兼容(并基于)。所以,你有的其他的 Starlette 代码也能正常⼯作。FastAPI 实际上是 Starlette的⼀个⼦类。所以,如果你已经知道或者使⽤ Starlette,⼤部分的功能会以相同的⽅式⼯作。
Starlette 的特性 ( FastAPI 就像加强版的 Starlette ):
通过 FastAPI
FastAPI 你可以获得所有 Starlette
NodeJS 及Go
Go 相当。
令⼈惊叹的性能。它是 Python 可⽤的最快的框架之⼀,和NodeJS
⽀持 WebSocket 。
⽀持 GraphQL 。
⽀持 GraphQL
后台任务处理。
Startup 和 shutdown 事件。
测试客户端基于 requests。
CORS, GZip, 静态⽂件, 流响应。
CORS
Session 和 Cookie 。
⽀持 Session 和 Cookie
100% 测试覆盖率。
代码库 100% 类型注释。
六、Pydantic 特性
FastAPI 和 Pydantic 完全兼容(并基于)。所以,你有的其他的 Pydantic 代码也能正常⼯作。
兼容包括基于 Pydantic 的外部库, 例如⽤与数据库的 ORMs, ODMs。
直接传到数据库,因为所有的验证都是⾃动的。
这也意味着在很多情况下,你可以将从请求中获得的相同对象直接传到数据库
直接传到客户端。
反之亦然,在很多情况下,你也可以将从数据库中获取的对象直接传到客户端
Pydantic (FastAPI 基于 Pydantic 做了所有的数据处理):
FastAPI 你可以获得所有 Pydantic
通过 FastAPI
更简单:
更简单
没有新的模式定义 micro-language 需要学习。
如果你知道 Python types,你就知道如何使⽤ Pydantic。
IDE/linter/brain 适配:
和你 IDE/linter/brain
因为 pydantic 数据结构仅仅是你定义的类的实例;⾃动补全,linting,mypy 以及你的直觉应该可以和你验证的数据⼀起正常⼯作。更快:
更快
在 基准测试 中,Pydantic ⽐其他被测试的库都要快。
复杂结构:
验证复杂结构
使⽤分层的 Pydantic 模型, Python typing的 List 和 Dict 等等。
验证器使我们能够简单清楚的将复杂的数据模式定义、检查并记录为 JSON Schema。
你可以拥有深度嵌套的 JSON
嵌套的 JSON 对象并对它们进⾏验证和注释。
可扩展:
可扩展
Pydantic 允许定义⾃定义数据类型或者你可以⽤验证器装饰器对被装饰的模型上的⽅法扩展验证。
100% 测试覆盖率。
七、FastAPI安装
安装 FastAPI。⾸先搭建环境,我⽤的是VS code,需要下载配置插件code runnner和python
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论