diff --git a/docs/zh/docs/advanced/additional-responses.md b/docs/zh/docs/advanced/additional-responses.md
index 365ba3db4f..842d49b4ca 100644
--- a/docs/zh/docs/advanced/additional-responses.md
+++ b/docs/zh/docs/advanced/additional-responses.md
@@ -34,7 +34,7 @@
///
-/// info | 信息
+/// note | 注意
`model` 键不是 OpenAPI 的一部分。
@@ -183,7 +183,7 @@
///
-/// info | 信息
+/// note | 注意
除非你在 `responses` 参数中明确指定不同的媒体类型,否则 FastAPI 会假设响应与主响应类具有相同的媒体类型(默认是 `application/json`)。
diff --git a/docs/zh/docs/advanced/advanced-dependencies.md b/docs/zh/docs/advanced/advanced-dependencies.md
index edaf964c93..da299a6bfc 100644
--- a/docs/zh/docs/advanced/advanced-dependencies.md
+++ b/docs/zh/docs/advanced/advanced-dependencies.md
@@ -98,7 +98,7 @@ checker(q="somequery")
在 0.118.0 中,这一行为被回退为:让 `yield` 之后的退出代码在响应发送之后再执行。
-/// info | 信息
+/// note | 注意
如你在下文所见,这与 0.106.0 之前的行为非常相似,但对若干边界情况做了改进和修复。
diff --git a/docs/zh/docs/advanced/custom-response.md b/docs/zh/docs/advanced/custom-response.md
index ce595572dd..053fa34c7d 100644
--- a/docs/zh/docs/advanced/custom-response.md
+++ b/docs/zh/docs/advanced/custom-response.md
@@ -41,7 +41,7 @@
{* ../../docs_src/custom_response/tutorial002_py310.py hl[2,7] *}
-/// info | 信息
+/// note | 注意
参数 `response_class` 也会用来定义响应的「媒体类型」。
@@ -65,7 +65,7 @@
///
-/// info | 信息
+/// note | 注意
当然,实际的 `Content-Type` 头、状态码等等,将来自于你返回的 `Response` 对象。
diff --git a/docs/zh/docs/advanced/dataclasses.md b/docs/zh/docs/advanced/dataclasses.md
index 42b4e4cc4d..a46615286c 100644
--- a/docs/zh/docs/advanced/dataclasses.md
+++ b/docs/zh/docs/advanced/dataclasses.md
@@ -18,7 +18,7 @@ FastAPI 基于 **Pydantic** 构建,我已经向你展示过如何使用 Pydant
这与使用 Pydantic 模型时的工作方式相同。而且底层实际上也是借助 Pydantic 实现的。
-/// info | 信息
+/// note | 注意
请注意,数据类不能完成 Pydantic 模型能做的所有事情。
diff --git a/docs/zh/docs/advanced/events.md b/docs/zh/docs/advanced/events.md
index 0b647a4388..e1bb2ed60b 100644
--- a/docs/zh/docs/advanced/events.md
+++ b/docs/zh/docs/advanced/events.md
@@ -120,7 +120,7 @@ async with lifespan(app):
此处,`shutdown` 事件处理器函数会向文件 `log.txt` 写入一行文本 `"Application shutdown"`。
-/// info | 信息
+/// note | 注意
在 `open()` 函数中,`mode="a"` 指的是“追加”。因此这行文本会添加在文件已有内容之后,不会覆盖之前的内容。
@@ -152,7 +152,7 @@ async with lifespan(app):
在底层,这部分是 ASGI 技术规范中的 [Lifespan 协议](https://asgi.readthedocs.io/en/latest/specs/lifespan.html)的一部分,定义了称为 `startup` 和 `shutdown` 的事件。
-/// info | 信息
+/// note | 注意
你可以在 [Starlette 的 Lifespan 文档](https://www.starlette.dev/lifespan/) 中阅读更多关于 `lifespan` 处理器的内容。
diff --git a/docs/zh/docs/advanced/generate-clients.md b/docs/zh/docs/advanced/generate-clients.md
index 049241bc90..9feaf6cf56 100644
--- a/docs/zh/docs/advanced/generate-clients.md
+++ b/docs/zh/docs/advanced/generate-clients.md
@@ -31,7 +31,6 @@ FastAPI 会自动生成 **OpenAPI 3.1** 规范,因此你使用的任何工具
例如,你可以尝试:
* [Stainless](https://www.stainless.com/?utm_source=fastapi&utm_medium=referral)
-* [liblab](https://developers.liblab.com/tutorials/sdk-for-fastapi?utm_source=fastapi)
其中一些方案也可能是开源的或提供免费层级,你可以不花钱就先试用。其他商业 SDK 生成器也可在网上找到。🤓
@@ -83,7 +82,7 @@ npx @hey-api/openapi-ts -i http://localhost:8000/openapi.json -o src/client
///
-你发送的数据如果不符合要求,会在编辑器中显示内联错误:
+你发送的数据会有**内联错误**:
diff --git a/docs/zh/docs/advanced/openapi-callbacks.md b/docs/zh/docs/advanced/openapi-callbacks.md
index 49cef36481..f4f2e7b81d 100644
--- a/docs/zh/docs/advanced/openapi-callbacks.md
+++ b/docs/zh/docs/advanced/openapi-callbacks.md
@@ -173,7 +173,7 @@ JSON 请求体包含如下内容:
/// tip | 提示
-注意,不能把路由本身(`invoices_callback_router`)传递给 `callbacks=`,要传递 `invoices_callback_router.routes` 中的 `.routes` 属性。
+注意,不能把路由本身(`invoices_callback_router`)传递给 `callbacks=`,要传递 `invoices_callback_router.routes` 中的 `.routes` 属性。FastAPI 会使用这些路由来生成回调的 OpenAPI 文档。
///
diff --git a/docs/zh/docs/advanced/openapi-webhooks.md b/docs/zh/docs/advanced/openapi-webhooks.md
index 3d6bcc9bc2..8bec3b6181 100644
--- a/docs/zh/docs/advanced/openapi-webhooks.md
+++ b/docs/zh/docs/advanced/openapi-webhooks.md
@@ -22,7 +22,7 @@
这能让您的用户更轻松地**实现他们的 API** 来接收您的**网络钩子**请求,他们甚至可能能够自动生成一些自己的 API 代码。
-/// info | 信息
+/// note | 注意
网络钩子在 OpenAPI 3.1.0 及以上版本中可用,FastAPI `0.99.0` 及以上版本支持。
@@ -36,7 +36,7 @@
您定义的网络钩子将被包含在 `OpenAPI` 的架构中,并出现在自动生成的**文档 UI** 中。
-/// info | 信息
+/// note | 注意
`app.webhooks` 对象实际上只是一个 `APIRouter` ,与您在使用多个文件来构建应用程序时所使用的类型相同。
diff --git a/docs/zh/docs/advanced/path-operation-advanced-configuration.md b/docs/zh/docs/advanced/path-operation-advanced-configuration.md
index 67f3bd7e9a..a9f2c1e860 100644
--- a/docs/zh/docs/advanced/path-operation-advanced-configuration.md
+++ b/docs/zh/docs/advanced/path-operation-advanced-configuration.md
@@ -16,17 +16,11 @@
### 使用 *路径操作函数* 的函数名作为 operationId { #using-the-path-operation-function-name-as-the-operationid }
-如果你想用 API 的函数名作为 `operationId`,你可以遍历所有路径操作,并使用它们的 `APIRoute.name` 重写每个 *路径操作* 的 `operation_id`。
+如果你想用 API 的函数名作为 `operationId`,你可以向 `FastAPI` 传入自定义的 `generate_unique_id_function`。
-你应该在添加了所有 *路径操作* 之后执行此操作。
+该函数会接收每个 `APIRoute`,并返回用于该路径操作的 `operationId`。
-{* ../../docs_src/path_operation_advanced_configuration/tutorial002_py310.py hl[2, 12:21, 24] *}
-
-/// tip
-
-如果你手动调用 `app.openapi()`,你应该在此之前更新 `operationId`。
-
-///
+{* ../../docs_src/path_operation_advanced_configuration/tutorial002_py310.py hl[2,5:6,9] *}
/// warning
diff --git a/docs/zh/docs/advanced/response-directly.md b/docs/zh/docs/advanced/response-directly.md
index 1966221467..f9a865137c 100644
--- a/docs/zh/docs/advanced/response-directly.md
+++ b/docs/zh/docs/advanced/response-directly.md
@@ -5,9 +5,9 @@
如果你声明了 [响应模型](../tutorial/response-model.md),FastAPI 会使用它通过 Pydantic 将数据序列化为 JSON。
如果你没有声明响应模型,**FastAPI** 会使用在 [JSON 兼容编码器](../tutorial/encoder.md) 中阐述的 `jsonable_encoder`。
-然后,**FastAPI** 会在后台将这些兼容 JSON 的数据(比如字典)放到一个 `JSONResponse` 中,该 `JSONResponse` 会用来发送响应给客户端。
+然后,**FastAPI** 会将其放入一个 `JSONResponse` 中。
-但是你可以在你的 *路径操作* 中直接返回一个 `JSONResponse`。
+你也可以直接创建一个 `JSONResponse` 并返回它。
/// tip | 提示
@@ -17,9 +17,9 @@
## 返回 `Response` { #return-a-response }
-事实上,你可以返回任意 `Response` 或者任意 `Response` 的子类。
+你可以返回一个 `Response` 或其任意子类。
-/// info | 信息
+/// note | 注意
`JSONResponse` 本身是一个 `Response` 的子类。
diff --git a/docs/zh/docs/advanced/security/oauth2-scopes.md b/docs/zh/docs/advanced/security/oauth2-scopes.md
index a1ecc641ca..db29e49163 100644
--- a/docs/zh/docs/advanced/security/oauth2-scopes.md
+++ b/docs/zh/docs/advanced/security/oauth2-scopes.md
@@ -46,7 +46,7 @@ OAuth2 规范将“作用域”定义为由空格分隔的字符串列表。
* Facebook / Instagram 使用 `instagram_basic`
* Google 使用 `https://www.googleapis.com/auth/drive`
-/// info | 信息
+/// note | 注意
在 OAuth2 中,“作用域”只是一个声明所需特定权限的字符串。
@@ -126,7 +126,7 @@ OAuth2 规范将“作用域”定义为由空格分隔的字符串列表。
{* ../../docs_src/security/tutorial005_an_py310.py hl[5,141,172] *}
-/// info | 技术细节
+/// note | 技术细节
`Security` 实际上是 `Depends` 的子类,它只多了一个我们稍后会看到的参数。
diff --git a/docs/zh/docs/advanced/stream-data.md b/docs/zh/docs/advanced/stream-data.md
index 322561ac11..366ab203be 100644
--- a/docs/zh/docs/advanced/stream-data.md
+++ b/docs/zh/docs/advanced/stream-data.md
@@ -4,7 +4,7 @@
但如果你想流式传输纯二进制数据或字符串,可以按下面的方法操作。
-/// info | 信息
+/// note | 注意
自 FastAPI 0.134.0 起新增。
@@ -90,7 +90,7 @@ FastAPI 会将每个数据块原样交给 `StreamingResponse`,不会尝试将
而且很多情况下,读取它们是一个阻塞操作(可能会阻塞事件循环),因为数据来自磁盘或网络。
-/// info | 信息
+/// note | 注意
上面的示例其实是个例外,因为 `io.BytesIO` 对象已经在内存中,所以读取它不会阻塞。
diff --git a/docs/zh/docs/advanced/strict-content-type.md b/docs/zh/docs/advanced/strict-content-type.md
index 973d1840c0..0cf9242aff 100644
--- a/docs/zh/docs/advanced/strict-content-type.md
+++ b/docs/zh/docs/advanced/strict-content-type.md
@@ -81,7 +81,7 @@ http://localhost:8000/v1/agents/multivac
启用该设置后,缺少 `Content-Type` 头的请求其请求体也会按 JSON 解析,这与旧版本 FastAPI 的行为一致。
-/// info | 信息
+/// note | 注意
此行为和配置在 FastAPI 0.132.0 中新增。
diff --git a/docs/zh/docs/advanced/websockets.md b/docs/zh/docs/advanced/websockets.md
index d90ef87339..7950f90eaa 100644
--- a/docs/zh/docs/advanced/websockets.md
+++ b/docs/zh/docs/advanced/websockets.md
@@ -111,11 +111,11 @@ $ fastapi dev
{* ../../docs_src/websockets_/tutorial002_an_py310.py hl[68:69,82] *}
-/// info
+/// note | 注意
由于这是一个 WebSocket,抛出 `HTTPException` 并不是很合理,而是抛出 `WebSocketException`。
-您可以使用[规范中定义的有效代码](https://tools.ietf.org/html/rfc6455#section-7.4.1)。
+您可以使用[规范中定义的有效关闭代码](https://tools.ietf.org/html/rfc6455#section-7.4.1)。
///
@@ -140,7 +140,7 @@ $ fastapi dev
* "Item ID",用于路径。
* "Token",作为查询参数。
-/// tip
+/// tip | 提示
注意,查询参数 `token` 将由依赖项处理。
@@ -168,13 +168,13 @@ $ fastapi dev
Client #1596980209979 left the chat
```
-/// tip
+/// tip | 提示
上面的应用程序是一个最小和简单的示例,用于演示如何处理和向多个 WebSocket 连接广播消息。
但请记住,由于所有内容都在内存中以单个列表的形式处理,因此它只能在进程运行时工作,并且只能使用单个进程。
-如果您需要与 FastAPI 集成更简单但更强大的功能,支持 Redis、PostgreSQL 或其他功能,请查看 [encode/broadcaster](https://github.com/encode/broadcaster)。
+如果您需要与 FastAPI 集成更简单但更健壮的方案,支持 Redis、PostgreSQL 或其他,请查看 [encode/broadcaster](https://github.com/encode/broadcaster)。
///
diff --git a/docs/zh/docs/advanced/wsgi.md b/docs/zh/docs/advanced/wsgi.md
index 038b672f8a..f665c371f4 100644
--- a/docs/zh/docs/advanced/wsgi.md
+++ b/docs/zh/docs/advanced/wsgi.md
@@ -6,7 +6,7 @@
## 使用 `WSGIMiddleware` { #using-wsgimiddleware }
-/// info | 信息
+/// note | 注意
需要安装 `a2wsgi`,例如使用 `pip install a2wsgi`。
diff --git a/docs/zh/docs/deployment/docker.md b/docs/zh/docs/deployment/docker.md
index aa7b60b508..c1b216953e 100644
--- a/docs/zh/docs/deployment/docker.md
+++ b/docs/zh/docs/deployment/docker.md
@@ -132,7 +132,7 @@ Successfully installed fastapi pydantic
-/// info | 信息
+/// note | 注意
还有其他格式和工具可以定义并安装包依赖。
@@ -556,7 +556,7 @@ CMD ["fastapi", "run", "app/main.py", "--port", "80", "--workers", "4"]
如果你有**多个容器**,可能每个容器运行一个**单独进程**(例如在 **Kubernetes** 集群中),那么你可能希望使用一个**单独的容器**来执行**前置步骤**,在一个容器中运行一个进程,**在**启动那些复制的 worker 容器**之前**完成。
-/// info | 信息
+/// note | 注意
如果你使用 Kubernetes,这通常会是一个 [Init Container](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/)。
diff --git a/docs/zh/docs/deployment/fastapicloud.md b/docs/zh/docs/deployment/fastapicloud.md
index d438709935..9140e30c05 100644
--- a/docs/zh/docs/deployment/fastapicloud.md
+++ b/docs/zh/docs/deployment/fastapicloud.md
@@ -1,26 +1,6 @@
# FastAPI Cloud { #fastapi-cloud }
-你可以用**一条命令**将你的 FastAPI 应用部署到 [FastAPI Cloud](https://fastapicloud.com),如果还没有,去加入候补名单吧。🚀
-
-## 登录 { #login }
-
-请确保你已有 **FastAPI Cloud** 账号(我们已从候补名单向你发出邀请 😉)。
-
-然后登录:
-
-
-## 简单用法 { #simple-usage }
+## 簡单用法 { #simple-usage }
观察一下就会发现,只要*路径*和*操作*匹配,就会使用声明的*路径操作函数*。随后,**FastAPI** 会用正确的参数调用该函数,并从请求中提取数据。
diff --git a/docs/zh/docs/tutorial/dependencies/sub-dependencies.md b/docs/zh/docs/tutorial/dependencies/sub-dependencies.md
index 1c30b43807..a57271c8e7 100644
--- a/docs/zh/docs/tutorial/dependencies/sub-dependencies.md
+++ b/docs/zh/docs/tutorial/dependencies/sub-dependencies.md
@@ -35,7 +35,7 @@ FastAPI 支持创建含**子依赖项**的依赖项。
{* ../../docs_src/dependencies/tutorial005_an_py310.py hl[23] *}
-/// info | 信息
+/// note | 注意
注意,这里在*路径操作函数*中只声明了一个依赖项,即 `query_or_cookie_extractor` 。
diff --git a/docs/zh/docs/tutorial/first-steps.md b/docs/zh/docs/tutorial/first-steps.md
index 78db1fefc0..3eee0d44fd 100644
--- a/docs/zh/docs/tutorial/first-steps.md
+++ b/docs/zh/docs/tutorial/first-steps.md
@@ -180,7 +180,7 @@ entrypoint = "backend.main:app"
from backend.main import app
```
-### `fastapi dev` 带路径 { #fastapi-dev-with-path }
+### 带路径或使用 `--entrypoint` CLI 选项的 `fastapi dev` { #fastapi-dev-with-path-or-with-entrypoint-cli-option }
你也可以把文件路径传给 `fastapi dev` 命令,它会尝试推断要使用的 FastAPI 应用对象:
@@ -188,29 +188,19 @@ from backend.main import app
$ fastapi dev main.py
```
-但这样每次调用 `fastapi` 命令时都需要记得传入正确的路径。
-
-另外,其他工具可能无法找到它,例如 [VS Code 扩展](../editor-support.md) 或 [FastAPI Cloud](https://fastapicloud.com),因此推荐在 `pyproject.toml` 中使用 `entrypoint`。
-
-### 部署你的应用(可选) { #deploy-your-app-optional }
-
-你可以选择将 FastAPI 应用部署到 [FastAPI Cloud](https://fastapicloud.com),如果还没有,先去加入候补名单。🚀
-
-如果你已经拥有 **FastAPI Cloud** 账户(我们从候补名单邀请了你 😉),你可以用一条命令部署应用。
-
-部署前,先确保已登录:
-
-get 操作
-/// info | `@decorator` 信息
+/// note | `@decorator` 信息
`@something` 语法在 Python 中被称为「装饰器」。
@@ -349,7 +341,7 @@ https://example.com/items/foo
* `@app.patch()`
* `@app.trace()`
-/// tip
+/// tip | 提示
你可以随意使用任何一个操作(HTTP方法)。
@@ -383,7 +375,7 @@ https://example.com/items/foo
{* ../../docs_src/first_steps/tutorial003_py310.py hl[7] *}
-/// note
+/// note | 注意
如果你不知道两者的区别,请查阅 [并发: *赶时间吗?*](../async.md#in-a-hurry)。
diff --git a/docs/zh/docs/tutorial/metadata.md b/docs/zh/docs/tutorial/metadata.md
index b761f08886..ba480637b3 100644
--- a/docs/zh/docs/tutorial/metadata.md
+++ b/docs/zh/docs/tutorial/metadata.md
@@ -74,7 +74,7 @@
{* ../../docs_src/metadata/tutorial004_py310.py hl[21,26] *}
-/// info | 信息
+/// note | 注意
阅读更多关于标签的信息[路径操作配置](path-operation-configuration.md#tags)。
diff --git a/docs/zh/docs/tutorial/path-operation-configuration.md b/docs/zh/docs/tutorial/path-operation-configuration.md
index b9046a13be..b813e38f80 100644
--- a/docs/zh/docs/tutorial/path-operation-configuration.md
+++ b/docs/zh/docs/tutorial/path-operation-configuration.md
@@ -56,7 +56,7 @@ OpenAPI 概图会自动添加标签,供 API 文档接口使用:
## 从 docstring 获取描述 { #description-from-docstring }
-描述内容比较长且占用多行时,可以在函数的 docstring 中声明*路径操作*的描述,**FastAPI** 会从中读取。
+描述内容比较长且占用多行时,可以在函数的 文档字符串 中声明*路径操作*的描述,**FastAPI** 会从中读取。
文档字符串支持 [Markdown](https://en.wikipedia.org/wiki/Markdown),能正确解析和显示 Markdown 的内容,但要注意文档字符串的缩进。
@@ -72,13 +72,13 @@ OpenAPI 概图会自动添加标签,供 API 文档接口使用:
{* ../../docs_src/path_operation_configuration/tutorial005_py310.py hl[18] *}
-/// info | 信息
+/// note | 注意
注意,`response_description` 只用于描述响应,`description` 一般则用于描述*路径操作*。
///
-/// check | 检查
+/// tip | 提示
OpenAPI 规定每个*路径操作*都要有响应描述。
diff --git a/docs/zh/docs/tutorial/path-params-numeric-validations.md b/docs/zh/docs/tutorial/path-params-numeric-validations.md
index 26b91c1d73..cb4985119c 100644
--- a/docs/zh/docs/tutorial/path-params-numeric-validations.md
+++ b/docs/zh/docs/tutorial/path-params-numeric-validations.md
@@ -8,7 +8,7 @@
{* ../../docs_src/path_params_numeric_validations/tutorial001_an_py310.py hl[1,3] *}
-/// info | 信息
+/// note | 注意
FastAPI 在 0.95.0 版本添加了对 `Annotated` 的支持(并开始推荐使用它)。
@@ -131,7 +131,7 @@ Python 不会对这个 `*` 做任何事,但它会知道之后的所有参数
* `lt`:小于(`l`ess `t`han)
* `le`:小于等于(`l`ess than or `e`qual)
-/// info | 信息
+/// note | 注意
`Query`、`Path` 以及你后面会看到的其他类,都是一个通用 `Param` 类的子类。
@@ -139,7 +139,7 @@ Python 不会对这个 `*` 做任何事,但它会知道之后的所有参数
///
-/// note | 注意
+/// note | 技术细节
当你从 `fastapi` 导入 `Query`、`Path` 和其他对象时,它们实际上是函数。
diff --git a/docs/zh/docs/tutorial/path-params.md b/docs/zh/docs/tutorial/path-params.md
index df9210673c..0db71859cc 100644
--- a/docs/zh/docs/tutorial/path-params.md
+++ b/docs/zh/docs/tutorial/path-params.md
@@ -20,7 +20,7 @@
本例把 `item_id` 的类型声明为 `int`。
-/// check | 检查
+/// tip | 提示
类型声明将为函数提供错误检查、代码补全等编辑器支持。
@@ -34,7 +34,7 @@
{"item_id":3}
```
-/// check | 检查
+/// tip | 提示
注意,函数接收并返回的值是 `3`( `int`),不是 `"3"`(`str`)。
@@ -66,7 +66,7 @@
值的类型不是 `int` 而是浮点数(`float`)时也会显示同样的错误,比如: [http://127.0.0.1:8000/items/4.2](http://127.0.0.1:8000/items/4.2)
-/// check | 检查
+/// tip | 提示
**FastAPI** 使用同样的 Python 类型声明实现了数据校验。
@@ -82,7 +82,7 @@
-/// check | 检查
+/// tip | 提示
还是使用 Python 类型声明,**FastAPI** 提供了(集成 Swagger UI 的)自动交互式文档。
@@ -102,7 +102,7 @@
## Pydantic { #pydantic }
-FastAPI 充分地利用了 [Pydantic](https://docs.pydantic.dev/) 的优势,用它在后台校验数据。众所周知,Pydantic 擅长的就是数据校验。
+所有数据校验都由 [Pydantic](https://docs.pydantic.dev/) 在幕后完成,因此你能从中获得所有好处。而且你可以放心。
同样,`str`、`float`、`bool` 以及很多复合数据类型都可以使用类型声明。
diff --git a/docs/zh/docs/tutorial/query-params-str-validations.md b/docs/zh/docs/tutorial/query-params-str-validations.md
index 67a5b40008..05cefc6e25 100644
--- a/docs/zh/docs/tutorial/query-params-str-validations.md
+++ b/docs/zh/docs/tutorial/query-params-str-validations.md
@@ -29,7 +29,7 @@ FastAPI 会因为默认值 `= None` 而知道 `q` 的值不是必填的。
{* ../../docs_src/query_params_str_validations/tutorial002_an_py310.py hl[1,3] *}
-/// info | 信息
+/// note | 注意
FastAPI 在 0.95.0 版本中添加了对 `Annotated` 的支持(并开始推荐使用)。
@@ -381,7 +381,7 @@ Pydantic 还有 [`BeforeValidator`](https://docs.pydantic.dev/latest/concepts/va
{* ../../docs_src/query_params_str_validations/tutorial015_an_py310.py hl[5,16:19,24] *}
-/// info | 信息
+/// note | 注意
这在 Pydantic 2 或更高版本中可用。😎
diff --git a/docs/zh/docs/tutorial/query-params.md b/docs/zh/docs/tutorial/query-params.md
index 9d6c05fbb7..c9cb2d26e1 100644
--- a/docs/zh/docs/tutorial/query-params.md
+++ b/docs/zh/docs/tutorial/query-params.md
@@ -65,7 +65,7 @@ http://127.0.0.1:8000/items/?skip=20
本例中,查询参数 `q` 是可选的,默认值为 `None`。
-/// check | 检查
+/// tip | 提示
注意,**FastAPI** 可以识别出 `item_id` 是路径参数,`q` 不是路径参数,而是查询参数。
diff --git a/docs/zh/docs/tutorial/request-files.md b/docs/zh/docs/tutorial/request-files.md
index 6569e1715a..102d422155 100644
--- a/docs/zh/docs/tutorial/request-files.md
+++ b/docs/zh/docs/tutorial/request-files.md
@@ -2,7 +2,7 @@
你可以使用 `File` 定义由客户端上传的文件。
-/// info | 信息
+/// note | 注意
要接收上传的文件,请先安装 [`python-multipart`](https://github.com/Kludex/python-multipart)。
@@ -28,7 +28,7 @@ $ pip install python-multipart
{* ../../docs_src/request_files/tutorial001_an_py310.py hl[9] *}
-/// info | 信息
+/// note | 注意
`File` 是直接继承自 `Form` 的类。
diff --git a/docs/zh/docs/tutorial/request-form-models.md b/docs/zh/docs/tutorial/request-form-models.md
index ec52710a8f..bbe805ef88 100644
--- a/docs/zh/docs/tutorial/request-form-models.md
+++ b/docs/zh/docs/tutorial/request-form-models.md
@@ -2,7 +2,7 @@
你可以在 FastAPI 中使用 **Pydantic 模型**声明**表单字段**。
-/// info | 信息
+/// note | 注意
要使用表单,首先安装 [`python-multipart`](https://github.com/Kludex/python-multipart)。
diff --git a/docs/zh/docs/tutorial/request-forms-and-files.md b/docs/zh/docs/tutorial/request-forms-and-files.md
index 8e092af0a8..d972391368 100644
--- a/docs/zh/docs/tutorial/request-forms-and-files.md
+++ b/docs/zh/docs/tutorial/request-forms-and-files.md
@@ -2,7 +2,7 @@
FastAPI 支持同时使用 `File` 和 `Form` 定义文件和表单字段。
-/// info | 信息
+/// note | 注意
接收上传的文件和/或表单数据,首先安装 [`python-multipart`](https://github.com/Kludex/python-multipart)。
diff --git a/docs/zh/docs/tutorial/request-forms.md b/docs/zh/docs/tutorial/request-forms.md
index ab82a181a2..3d305779f8 100644
--- a/docs/zh/docs/tutorial/request-forms.md
+++ b/docs/zh/docs/tutorial/request-forms.md
@@ -2,7 +2,7 @@
当你需要接收表单字段而不是 JSON 时,可以使用 `Form`。
-/// info
+/// note
要使用表单,首先安装 [`python-multipart`](https://github.com/Kludex/python-multipart)。
@@ -32,7 +32,7 @@ $ pip install python-multipart
使用 `Form` 可以像使用 `Body`(以及 `Query`、`Path`、`Cookie`)一样声明相同的配置,包括校验、示例、别名(例如将 `username` 写成 `user-name`)等。
-/// info
+/// note
`Form` 是直接继承自 `Body` 的类。
diff --git a/docs/zh/docs/tutorial/response-model.md b/docs/zh/docs/tutorial/response-model.md
index 9b4e0382e9..5d8d0c1859 100644
--- a/docs/zh/docs/tutorial/response-model.md
+++ b/docs/zh/docs/tutorial/response-model.md
@@ -72,7 +72,7 @@ FastAPI 会使用这个 `response_model` 来完成数据文档、校验等,并
{* ../../docs_src/response_model/tutorial002_py310.py hl[7,9] *}
-/// info | 信息
+/// note | 注意
要使用 `EmailStr`,首先安装 [`email-validator`](https://github.com/JoshData/python-email-validator)。
@@ -116,7 +116,7 @@ $ pip install "pydantic[email]"
{* ../../docs_src/response_model/tutorial003_py310.py hl[24] *}
-……我们仍将 `response_model` 声明为不包含密码的 `UserOut` 模型:
+...我们仍将 `response_model` 声明为不包含密码的 `UserOut` 模型:
{* ../../docs_src/response_model/tutorial003_py310.py hl[22] *}
@@ -128,7 +128,7 @@ $ pip install "pydantic[email]"
这就是为什么在这个例子里我们必须在 `response_model` 参数中声明它。
-……但继续往下读,看看如何更好地处理这种情况。
+...但继续往下读,看看如何更好地处理这种情况。
## 返回类型与数据过滤 { #return-type-and-data-filtering }
@@ -206,7 +206,7 @@ FastAPI 在内部配合 Pydantic 做了多项处理,确保不会把类继承
{* ../../docs_src/response_model/tutorial003_04_py310.py hl[8] *}
-……它失败是因为该类型注解不是 Pydantic 类型,也不只是单个 `Response` 类或其子类,而是 `Response` 与 `dict` 的联合类型(任意其一)。
+...它失败是因为该类型注解不是 Pydantic 类型,也不只是单个 `Response` 类或其子类,而是 `Response` 与 `dict` 的联合类型(任意其一)。
### 禁用响应模型 { #disable-response-model }
@@ -251,7 +251,7 @@ FastAPI 在内部配合 Pydantic 做了多项处理,确保不会把类继承
}
```
-/// info | 信息
+/// note | 注意
你还可以使用:
diff --git a/docs/zh/docs/tutorial/response-status-code.md b/docs/zh/docs/tutorial/response-status-code.md
index e57c0e5937..411ece71c1 100644
--- a/docs/zh/docs/tutorial/response-status-code.md
+++ b/docs/zh/docs/tutorial/response-status-code.md
@@ -18,7 +18,7 @@
`status_code` 参数接收表示 HTTP 状态码的数字。
-/// info | 信息
+/// note | 注意
`status_code` 还能接收 `IntEnum` 类型,比如 Python 的 [`http.HTTPStatus`](https://docs.python.org/3/library/http.html#http.HTTPStatus)。
diff --git a/docs/zh/docs/tutorial/schema-extra-example.md b/docs/zh/docs/tutorial/schema-extra-example.md
index 482abd21de..2ea590c868 100644
--- a/docs/zh/docs/tutorial/schema-extra-example.md
+++ b/docs/zh/docs/tutorial/schema-extra-example.md
@@ -24,7 +24,7 @@
///
-/// info | 信息
+/// note | 注意
OpenAPI 3.1.0(自 FastAPI 0.99.0 起使用)增加了对 `examples` 的支持,它是 JSON Schema 标准的一部分。
@@ -155,7 +155,7 @@ OpenAPI 还在规范的其他部分添加了 `example` 和 `examples` 字段:
- `File()`
- `Form()`
-/// info | 信息
+/// note | 注意
这个旧的、OpenAPI 特定的 `examples` 参数,自 FastAPI `0.103.0` 起改名为 `openapi_examples`。
@@ -171,7 +171,7 @@ OpenAPI 还在规范的其他部分添加了 `example` 和 `examples` 字段:
JSON Schema 中这个新的 `examples` 字段只是一个由示例组成的 `list`,而不是像上面提到的 OpenAPI 其他位置那样带有额外元数据的 `dict`。
-/// info | 信息
+/// note | 注意
即使在 OpenAPI 3.1.0 发布、并与 JSON Schema 有了这种更简单的集成之后,有一段时间里,提供自动文档的 Swagger UI 并不支持 OpenAPI 3.1.0(它自 5.0.0 版本起已支持 🎉)。
diff --git a/docs/zh/docs/tutorial/security/first-steps.md b/docs/zh/docs/tutorial/security/first-steps.md
index 6cc91211a3..e274d513a4 100644
--- a/docs/zh/docs/tutorial/security/first-steps.md
+++ b/docs/zh/docs/tutorial/security/first-steps.md
@@ -24,13 +24,13 @@
## 运行 { #run-it }
-/// info | 信息
+/// note | 注意
当你使用命令 `pip install "fastapi[standard]"` 安装 **FastAPI** 时,[`python-multipart`](https://github.com/Kludex/python-multipart) 包会自动安装。
但是,如果你使用 `pip install fastapi`,默认不会包含 `python-multipart` 包。
-如需手动安装,请先创建并激活[虚拟环境](../../virtual-environments.md),然后执行:
+如需手动安装,请先创建[虚拟环境](../../virtual-environments.md)、激活它,然后执行:
```console
$ pip install python-multipart
@@ -60,7 +60,7 @@ $ fastapi dev
-/// check | Authorize 按钮!
+/// tip | Authorize 按钮!
页面右上角已经有一个崭新的“Authorize”按钮。
@@ -118,7 +118,7 @@ OAuth2 的设计目标是让后端或 API 与负责用户认证的服务器解
本示例将使用 **OAuth2** 的 **Password** 流程并配合 **Bearer** 令牌,通过 `OAuth2PasswordBearer` 类来实现。
-/// info | 信息
+/// note | 注意
“Bearer” 令牌并非唯一选项。
@@ -148,7 +148,7 @@ OAuth2 的设计目标是让后端或 API 与负责用户认证的服务器解
我们很快也会创建对应的实际路径操作。
-/// info | 信息
+/// note | 注意
如果你是非常严格的 “Pythonista”,可能不喜欢使用参数名 `tokenUrl` 而不是 `token_url`。
@@ -176,7 +176,7 @@ oauth2_scheme(some, parameters)
**FastAPI** 会据此在 OpenAPI 架构(以及自动生成的 API 文档)中定义一个“安全方案”。
-/// info | 技术细节
+/// note | 技术细节
**FastAPI** 之所以知道可以使用(在依赖中声明的)`OAuth2PasswordBearer` 在 OpenAPI 中定义安全方案,是因为它继承自 `fastapi.security.oauth2.OAuth2`,而后者又继承自 `fastapi.security.base.SecurityBase`。
diff --git a/docs/zh/docs/tutorial/security/get-current-user.md b/docs/zh/docs/tutorial/security/get-current-user.md
index 814ff2c822..e8a1de9d5a 100644
--- a/docs/zh/docs/tutorial/security/get-current-user.md
+++ b/docs/zh/docs/tutorial/security/get-current-user.md
@@ -53,7 +53,7 @@
///
-/// check | 检查
+/// tip | 提示
依赖系统的这种设计方式可以支持不同的依赖项返回同一个 `User` 模型。
diff --git a/docs/zh/docs/tutorial/security/oauth2-jwt.md b/docs/zh/docs/tutorial/security/oauth2-jwt.md
index 8a56137d37..e0cbdf685e 100644
--- a/docs/zh/docs/tutorial/security/oauth2-jwt.md
+++ b/docs/zh/docs/tutorial/security/oauth2-jwt.md
@@ -42,7 +42,7 @@ $ pip install pyjwt
-/// info | 信息
+/// note | 注意
如果你计划使用类似 RSA 或 ECDSA 的数字签名算法,你应该安装加密库依赖项 `pyjwt[crypto]`。
@@ -213,7 +213,7 @@ JWT 除了用于识别用户并允许其直接在你的 API 上执行操作之
用户名: `johndoe`
密码: `secret`
-/// check | 检查
+/// tip | 提示
注意,代码中的任何地方都没有明文密码 “`secret`”,我们只有它的哈希版本。
diff --git a/docs/zh/docs/tutorial/security/simple-oauth2.md b/docs/zh/docs/tutorial/security/simple-oauth2.md
index d8d5b561e0..6ebf77e36f 100644
--- a/docs/zh/docs/tutorial/security/simple-oauth2.md
+++ b/docs/zh/docs/tutorial/security/simple-oauth2.md
@@ -32,7 +32,7 @@ OAuth2 还支持客户端发送**`scope`**表单字段。
* 脸书和 Instagram 使用 `instagram_basic`
* 谷歌使用 `https://www.googleapis.com/auth/drive`
-/// info | 信息
+/// note | 注意
OAuth2 中,**作用域**只是声明指定权限的字符串。
@@ -72,7 +72,7 @@ OAuth2 中,**作用域**只是声明指定权限的字符串。
* 可选的 `client_id`(本例未使用)
* 可选的 `client_secret`(本例未使用)
-/// info | 信息
+/// note | 注意
`OAuth2PasswordRequestForm` 并不像 `OAuth2PasswordBearer` 那样是 **FastAPI** 的特殊类。
@@ -144,7 +144,7 @@ UserInDB(
)
```
-/// info | 信息
+/// note | 注意
`user_dict` 的说明,详见[**更多模型**一章](../extra-models.md#about-user-in-dict)。
@@ -196,7 +196,7 @@ UserInDB(
{* ../../docs_src/security/tutorial003_an_py310.py hl[58:66,69:74,94] *}
-/// info | 信息
+/// note | 注意
此处返回值为 `Bearer` 的响应头 `WWW-Authenticate` 也是规范的一部分。
diff --git a/docs/zh/docs/tutorial/server-sent-events.md b/docs/zh/docs/tutorial/server-sent-events.md
index c78562b91e..8542756f21 100644
--- a/docs/zh/docs/tutorial/server-sent-events.md
+++ b/docs/zh/docs/tutorial/server-sent-events.md
@@ -4,7 +4,7 @@
这类似于[流式传输 JSON Lines](stream-json-lines.md),但使用 `text/event-stream` 格式,浏览器原生通过 [`EventSource` API](https://developer.mozilla.org/en-US/docs/Web/API/EventSource) 支持。
-/// info | 信息
+/// note | 注意
新增于 FastAPI 0.135.0。
diff --git a/docs/zh/docs/tutorial/stream-json-lines.md b/docs/zh/docs/tutorial/stream-json-lines.md
index 8a27dce760..e980225011 100644
--- a/docs/zh/docs/tutorial/stream-json-lines.md
+++ b/docs/zh/docs/tutorial/stream-json-lines.md
@@ -2,7 +2,7 @@
当你想以“流”的方式发送一系列数据时,可以使用 JSON Lines。
-/// info | 信息
+/// note | 注意
新增于 FastAPI 0.134.0。
@@ -48,7 +48,7 @@ sequenceDiagram
它与 JSON 数组(相当于 Python 的 list)非常相似,但不是用 `[]` 包裹、并在各项之间使用 `,` 分隔,而是每行一个 JSON 对象,彼此以换行符分隔。
-/// info | 信息
+/// note | 注意
关键在于你的应用可以逐行生成数据,而客户端在消费前面的行。
diff --git a/docs/zh/docs/tutorial/testing.md b/docs/zh/docs/tutorial/testing.md
index 6607a12391..50e1d8f2de 100644
--- a/docs/zh/docs/tutorial/testing.md
+++ b/docs/zh/docs/tutorial/testing.md
@@ -8,7 +8,7 @@
## 使用 `TestClient` { #using-testclient }
-/// info | 信息
+/// note | 注意
要使用 `TestClient`,先要安装 [`httpx`](https://www.python-httpx.org)。
@@ -142,7 +142,7 @@ $ pip install httpx
关于如何传数据给后端的更多信息(使用 `httpx` 或 `TestClient`),请查阅 [HTTPX 文档](https://www.python-httpx.org)。
-/// info | 信息
+/// note | 注意
注意 `TestClient` 接收可以被转化为JSON的数据,而不是Pydantic模型。