diff --git a/docs/zh/docs/index.md b/docs/zh/docs/index.md index 897fd45fb..e8427c90b 100644 --- a/docs/zh/docs/index.md +++ b/docs/zh/docs/index.md @@ -2,7 +2,7 @@ FastAPI

- FastAPI framework, high performance, easy to learn, fast to code, ready for production + FastAPI 框架,高性能,易于学习,高效编码,生产可用

@@ -27,7 +27,7 @@ --- -FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用基于类型提示的 Python 3.6 及更高版本。 +FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。 关键特性: @@ -36,54 +36,60 @@ FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框 * **高效编码**:提高功能开发速度约 200% 至 300%。* * **更少 bug**:减少约 40% 的人为(开发者)导致错误。* * **智能**:极佳的编辑器支持。处处皆可自动补全,减少调试时间。 -* **简单**:设计的易于使用和学习,减少阅读文档时间。 -* **简短**:减少代码重复。通过不同的参数声明实现丰富功能。bug 更少。 -* **健壮**:生产可用级别的代码。以及自动生成的交互式文档。 -* **标准化**:基于 API 的相关开放标准并完全兼容:OpenAPI (以前被称为 Swagger) 和 JSON Schema。 +* **简单**:设计的易于使用和学习,阅读文档的时间更短。 +* **简短**:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。 +* **健壮**:生产可用级别的代码。还有自动生成的交互式文档。 +* **标准化**:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema* 根据对某个构建线上应用的内部开发团队所进行的测试估算得出。 ## 评价 -"*[...] 最近我一直在使用 **FastAPI**。[...] 实际上我正在计划将其用于我所在的微软团队的所有**机器学习服务**。其中一些服务正被集成进 **Windows** 核心产品和一些 **Office** 产品。*" +「_[...] 最近我一直在使用 **FastAPI**。[...] 实际上我正在计划将其用于我所在的**微软**团队的所有**机器学习服务**。其中一些服务正被集成进核心 **Windows** 产品和一些 **Office** 产品。_」

Kabir Khan - 微软 (ref)
--- -"***FastAPI** 让我兴奋的欣喜若狂。它太棒了!*" +「_我们选择了 **FastAPI** 来创建用于获取**预测结果**的 **REST** 服务。[用于 Ludwig]_」 -
Brian Okken - Python Bytes 播客主持人 (ref)
+
Piero Molino,Yaroslav Dudin 和 Sai Sumanth Miryala - Uber (ref)
--- -"*老实说,你的作品看起来非常可靠和优美。在很多方面,这就是我想让 **Hug** 成为的样子 - 看到有人实现了它真的很鼓舞人心。*" +「_**Netflix** 非常高兴地宣布,正式开源我们的**危机管理**编排框架:**Dispatch**![使用 **FastAPI** 构建]_」 -
Timothy Crosley - Hug 作者 (ref)
+
Kevin Glisson,Marc Vilanova,Forest Monsen - Netflix (ref)
--- -"*如果你正打算学习一个**现代框架**用来构建 REST API,来看下 **FastAPI** [...] 它快速、易用且易于学习 [...]*" +「_**FastAPI** 让我兴奋的欣喜若狂。它太棒了!_」 + +
Brian Okken - Python Bytes 播客主持人 (ref)
-"*我们已经将 **API** 服务切换到了 **FastAPI** [...] 我认为你会喜欢它的 [...]*" +--- -
Ines Montani - Matthew Honnibal - Explosion AI 创始人 - spaCy 作者 (ref) - (ref)
+「_老实说,你的作品看起来非常可靠和优美。在很多方面,这就是我想让 **Hug** 成为的样子 - 看到有人实现了它真的很鼓舞人心。_」 + +
Timothy Crosley - Hug 作者 (ref)
--- -"*我们采用了 **FastAPI** 来创建用于获取**预测结果**的 **REST** 服务。[用于 Ludwig]*" +「_如果你正打算学习一个**现代框架**用来构建 REST API,来看下 **FastAPI** [...] 它快速、易用且易于学习 [...]_」 -
Piero Molino, Yaroslav Dudin 和 Sai Sumanth Miryala - Uber (ref)
+「_我们已经将 **API** 服务切换到了 **FastAPI** [...] 我认为你会喜欢它的 [...]_」 + +
Ines Montani - Matthew Honnibal - Explosion AI 创始人 - spaCy 作者 (ref) - (ref)
--- -## **Typer**,命令行中的 Fast API +## **Typer**,命令行中的 FastAPI 如果你正在开发一个在终端中运行的命令行应用而不是 web API,不妨试下 **Typer**。 -**Typer** 是 FastAPI 的小伙伴。它打算成为**命令行中的 FastAPI**。 ⌨️ 🚀 +**Typer** 是 FastAPI 的小同胞。它想要成为**命令行中的 FastAPI**。 ⌨️ 🚀 ## 依赖 @@ -91,8 +97,8 @@ Python 3.6 及更高版本 FastAPI 站在以下巨人的肩膀之上: -* Starlette负责 web 部分。 -* Pydantic负责数据部分。 +* Starlette 负责 web 部分。 +* Pydantic 负责数据部分。 ## 安装 @@ -106,7 +112,7 @@ $ pip install fastapi -你还需要一个 ASGI 服务器,生产环境可以使用 Uvicorn 或者 Hypercorn。 +你还会需要一个 ASGI 服务器,生产环境可以使用 Uvicorn 或者 Hypercorn
@@ -143,7 +149,7 @@ def read_item(item_id: int, q: str = None):
或者使用 async def... -如果你的代码里会出现 `async` / `await`,应使用 `async def`: +如果你的代码里会出现 `async` / `await`,请使用 `async def`: ```Python hl_lines="7 12" from fastapi import FastAPI @@ -176,11 +182,11 @@ async def read_item(item_id: int, q: str = None): ```console $ uvicorn main:app --reload -INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) -INFO: Started reloader process [28720] -INFO: Started server process [28722] -INFO: Waiting for application startup. -INFO: Application startup complete. +INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) +INFO: Started reloader process [28720] +INFO: Started server process [28722] +INFO: Waiting for application startup. +INFO: Application startup complete. ```
@@ -221,17 +227,17 @@ $ uvicorn main:app --reload ![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png) -### 备选 API 文档 +### 可选的 API 文档 访问 http://127.0.0.1:8000/redoc。 -你会看到另一个自动生成的文档(由 ReDoc)生成: +你会看到另一个自动生成的文档(由 ReDoc 生成): ![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png) -## 升级示例 +## 示例升级 -修改 `main.py` 文件来从 `PUT` 请求中接收请求体。 +现在修改 `main.py` 文件来从 `PUT` 请求中接收请求体。 我们借助 Pydantic 来使用标准的 Python 类型声明请求体。 @@ -265,7 +271,7 @@ def update_item(item_id: int, item: Item): 服务器将会自动重载(因为在上面的步骤中你向 `uvicorn` 命令添加了 `--reload` 选项)。 -### 升级交互式 API 文档 +### 交互式 API 文档升级 访问 http://127.0.0.1:8000/docs。 @@ -273,23 +279,23 @@ def update_item(item_id: int, item: Item): ![Swagger UI](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png) -* 点击 "Try it out" 按钮,之后你可以填写参数并直接调用 API: +* 点击「Try it out」按钮,之后你可以填写参数并直接调用 API: ![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-04-swagger-03.png) -* 然后点击 "Execute" 按钮,用户界面将会和 API 进行通信,发送参数,获取结果并在屏幕上展示: +* 然后点击「Execute」按钮,用户界面将会和 API 进行通信,发送参数,获取结果并在屏幕上展示: ![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-05-swagger-04.png) -### 升级备选文档 +### 可选文档升级 访问 http://127.0.0.1:8000/redoc。 -* 备选文档同样会体现新加入的请求参数和请求体: +* 可选文档同样会体现新加入的请求参数和请求体: ![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png) -### 回顾 +### 总结 总的来说,你就像声明函数的参数类型一样只声明了**一次**请求参数、请求体等的类型。 @@ -403,7 +409,6 @@ item: Item ## 性能 - 独立机构 TechEmpower 所作的基准测试结果显示,基于 Uvicorn 运行的 **FastAPI** 程序是 最快的 Python web 框架之一,仅次于 Starlette 和 Uvicorn 本身(FastAPI 内部使用了它们)。(*) 想了解更多,请查阅 基准测试 章节。 @@ -412,7 +417,7 @@ item: Item 用于 Pydantic: -* ujson - 更快的 JSON "解析"。 +* ujson - 更快的 JSON 「解析」。 * email_validator - 用于 email 校验。 用于 Starlette: @@ -420,15 +425,15 @@ item: Item * requests - 使用 `TestClient` 时安装。 * aiofiles - 使用 `FileResponse` 或 `StaticFiles` 时安装。 * jinja2 - 使用默认模板配置时安装。 -* python-multipart - 需要通过 `request.form()` 对表单进行"解析"时安装。 -* itsdangerous - 提供 `SessionMiddleware` 支持。 +* python-multipart - 需要通过 `request.form()` 对表单进行「解析」时安装。 +* itsdangerous - 需要 `SessionMiddleware` 支持时安装。 * pyyaml - 使用 Starlette 提供的 `SchemaGenerator` 时安装(有 FastAPI 你可能并不需要它)。 * graphene - 需要 `GraphQLApp` 支持时安装。 * ujson - 使用 `UJSONResponse` 时安装。 用于 FastAPI / Starlette: -* uvicorn - 用于加载和服务你的应用程序的服务器。 +* uvicorn - 用于加载和运行你的应用程序的服务器。 * orjson - 使用 `ORJSONResponse` 时安装。 你可以通过 `pip install fastapi[all]` 命令来安装以上所有依赖。