呆鸟译Py呆鸟的Python数据分析

FastAPI官档精编002 - 特性

2021-09-08  本文已影响0人  呆鸟的简书

呆鸟云:发布本系列旨在推广 FastAPI 以及推进 FastAPI 中文官档翻译,目前,FastAPI 官档已完成 98% 的中文翻译,如果您对 FastAPI 有兴趣,可以为这个很赞的开源项目做些贡献,比如校译、翻译、审阅等。

开源项目的发展离不开大家的支持。当然最简单的就是在 Github 上点 Star 了。

如果您觉得 FastAPI 不错,也可以转发、转载本文,让更多人知道 Python 还有这么简单的后端支持库。

下面先列出几个需要 Review 的 PR,希望大家多多参与。

以下为正文。


FastAPI 特性

FastAPI 具备以下特性:

基于开放标准

自动文档

API 文档和探索性 Web 用户界面。FastAPI 基于 OpenAPI,支持多种备选文档方案,目前默认自带 2 个 API 文档。

Swagger UI 交互 ReDoc

现代 Python

借助 Pydantic,FastAPI 的功能全部基于标准的 Python 3.6 类型声明。无需学习新语法,只需要标准的现代 Python 。

就算不使用 FastAPI,最好也花几分钟学习一下 Python 类型,详见:Python 类型。

使用类型的标准 Python:

from types import List, Dict
from datetime import date

from pydantic import BaseModel


# 把变量声明为字符串
# 在函数内部获得编辑器支持
def main(user_id: str):
    return user_id


# Pydantic 模型
class User(BaseModel):
    id: int
    name: str
    joined: date

用法如下:

my_user: User = User(id=3, name="John Doe", joined="2018-07-19")

second_user_data = {
    "id": 4,
    "name": "Mary",
    "joined": "2018-11-30",
}

my_second_user: User = User(**second_user_data)

!!! info "说明"

`**second_user_data` 是指:

直接把 `second_user_data` 字典的键值作为关键字参数传递,等效于:`User(id=4, name="Mary", joined="2018-11-30")`

编辑器支持

FastAPI 设计的易用且直观,为了确保最佳的开发体验,所有设计方案在开发前就在多个编辑器上进行了测试。

最新的 Python 开发者调查报告显示使用最多的功能是自动补全

FastAPI 就是基于这一点,处处都有自动补全。

开发者几乎不需要翻阅文档。

编辑器会提供各种帮助:

编辑器支持 编辑器支持

即便在之前不敢想象的位置,也实现了代码自动补全。例如,自动补全 JSON 请求体(可能是嵌套的)中的键 price

再也不会输错键名,也不用来回翻阅文档,更不用上下求索,确认最后使用的是 username 还是 user_name

简洁

所有对象都有合理的默认值,处处都有可选配置。所有参数都可以微调,以满足您的需求,开发出理想的 API。

但默认的前提是,一切都能正常运转

验证

所有的验证都由完善且稳定的 Pydantic 处理。

安全与身份验证

集成了安全和身份验证,杜绝数据库或数据模型的渗透风险。

OpenAPI 中定义的安全概图,包括:

此外,还有 Starlette(包括 session cookie)的所有安全功能。

所有的工具和组件都可以复用,并能轻易地与您的系统、数据仓库、关系型数据库、 NoSQL 数据库集成。

依赖注入

FastAPI 的依赖注入系统非常简单,但却十分强大。

无限的插件

其实,FastAPI 并不需要插件,可以直接导入和使用所需的代码。

依赖项可以把任意支持库轻易地整合进 FastAPI 应用,使用与路径操作相同的架构和语法,只要两行代码就可以为应用创建任意插件

测试

Starlette 特性

FastAPI 完全兼容并基于 Starlette。所以,Starlette 代码能在 FastAPI 应用中正常运行。FastAPI 实际上是 Starlette 的子类。只要了解 Starlette,就可以使用它的绝大部分功能。

FastAPI 拥有 Starlette 的所有功能,可以说,它是 Starlette 的加强版:

Pydantic 特性

FastAPI 完全兼容并基于 Pydantic。所以,Pydantic 代码能在 FastAPI 应用中正常运行。

FastAPI 还支持基于 Pydantic 的外部库,例如,数据库的 ORM、ODM。

也就是说,很多情况下,可以把从请求中获得的对象直接传到数据库,因为所有的验证都是自动的。

反之,也可以把从数据库中获取的对象直接传到客户端

FastAPI 支持 Pydantic 的所有功能(基于 Pydantic 实现数据处理):

上一篇 下一篇

猜你喜欢

热点阅读