Browse Source

🌐 Update translations for zh-hant (update-outdated) (#15760)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Yurii Motov <[email protected]>
pull/15772/head
Sebastián Ramírez 2 weeks ago
committed by GitHub
parent
commit
b401cb71c0
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 4
      docs/zh-hant/docs/advanced/additional-responses.md
  2. 2
      docs/zh-hant/docs/advanced/advanced-dependencies.md
  3. 4
      docs/zh-hant/docs/advanced/custom-response.md
  4. 2
      docs/zh-hant/docs/advanced/dataclasses.md
  5. 4
      docs/zh-hant/docs/advanced/events.md
  6. 1
      docs/zh-hant/docs/advanced/generate-clients.md
  7. 4
      docs/zh-hant/docs/advanced/openapi-callbacks.md
  8. 4
      docs/zh-hant/docs/advanced/openapi-webhooks.md
  9. 14
      docs/zh-hant/docs/advanced/path-operation-advanced-configuration.md
  10. 4
      docs/zh-hant/docs/advanced/response-directly.md
  11. 4
      docs/zh-hant/docs/advanced/security/oauth2-scopes.md
  12. 4
      docs/zh-hant/docs/advanced/stream-data.md
  13. 2
      docs/zh-hant/docs/advanced/strict-content-type.md
  14. 2
      docs/zh-hant/docs/advanced/websockets.md
  15. 2
      docs/zh-hant/docs/advanced/wsgi.md
  16. 4
      docs/zh-hant/docs/deployment/docker.md
  17. 24
      docs/zh-hant/docs/deployment/fastapicloud.md
  18. 1
      docs/zh-hant/docs/deployment/manually.md
  19. 2
      docs/zh-hant/docs/deployment/server-workers.md
  20. 12
      docs/zh-hant/docs/how-to/extending-openapi.md
  21. 2
      docs/zh-hant/docs/how-to/separate-openapi-schemas.md
  22. 8
      docs/zh-hant/docs/index.md
  23. 22
      docs/zh-hant/docs/tutorial/bigger-applications.md
  24. 4
      docs/zh-hant/docs/tutorial/body-multiple-params.md
  25. 5
      docs/zh-hant/docs/tutorial/body-nested-models.md
  26. 2
      docs/zh-hant/docs/tutorial/body.md
  27. 2
      docs/zh-hant/docs/tutorial/cookie-param-models.md
  28. 10
      docs/zh-hant/docs/tutorial/cookie-params.md
  29. 2
      docs/zh-hant/docs/tutorial/debugging.md
  30. 4
      docs/zh-hant/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
  31. 2
      docs/zh-hant/docs/tutorial/dependencies/dependencies-with-yield.md
  32. 4
      docs/zh-hant/docs/tutorial/dependencies/index.md
  33. 2
      docs/zh-hant/docs/tutorial/dependencies/sub-dependencies.md
  34. 34
      docs/zh-hant/docs/tutorial/first-steps.md
  35. 4
      docs/zh-hant/docs/tutorial/metadata.md
  36. 4
      docs/zh-hant/docs/tutorial/path-operation-configuration.md
  37. 4
      docs/zh-hant/docs/tutorial/path-params-numeric-validations.md
  38. 8
      docs/zh-hant/docs/tutorial/path-params.md
  39. 8
      docs/zh-hant/docs/tutorial/query-params-str-validations.md
  40. 2
      docs/zh-hant/docs/tutorial/query-params.md
  41. 4
      docs/zh-hant/docs/tutorial/request-files.md
  42. 2
      docs/zh-hant/docs/tutorial/request-form-models.md
  43. 2
      docs/zh-hant/docs/tutorial/request-forms-and-files.md
  44. 4
      docs/zh-hant/docs/tutorial/request-forms.md
  45. 4
      docs/zh-hant/docs/tutorial/response-model.md
  46. 4
      docs/zh-hant/docs/tutorial/response-status-code.md
  47. 6
      docs/zh-hant/docs/tutorial/schema-extra-example.md
  48. 10
      docs/zh-hant/docs/tutorial/security/first-steps.md
  49. 2
      docs/zh-hant/docs/tutorial/security/get-current-user.md
  50. 4
      docs/zh-hant/docs/tutorial/security/oauth2-jwt.md
  51. 10
      docs/zh-hant/docs/tutorial/security/simple-oauth2.md
  52. 2
      docs/zh-hant/docs/tutorial/server-sent-events.md
  53. 4
      docs/zh-hant/docs/tutorial/stream-json-lines.md
  54. 4
      docs/zh-hant/docs/tutorial/testing.md

4
docs/zh-hant/docs/advanced/additional-responses.md

@ -34,7 +34,7 @@
///
/// info | 說明
/// note | 注意
`model` 這個鍵不屬於 OpenAPI。
@ -183,7 +183,7 @@
///
/// info | 說明
/// note | 注意
除非你在 `responses` 參數中明確指定不同的媒體型別,否則 FastAPI 會假設回應的媒體型別與主回應類別相同(預設為 `application/json`)。

2
docs/zh-hant/docs/advanced/advanced-dependencies.md

@ -98,7 +98,7 @@ checker(q="somequery")
這個行為在 0.118.0 被還原,使得 `yield` 之後的結束程式碼會在回應送出之後才被執行。
/// info | 資訊
/// note | 注意
如下所見,這與 0.106.0 之前的行為非常類似,但對一些邊界情況做了多項改進與錯誤修正。

4
docs/zh-hant/docs/advanced/custom-response.md

@ -41,7 +41,7 @@ FastAPI 預設回傳 JSON 回應。
{* ../../docs_src/custom_response/tutorial002_py310.py hl[2,7] *}
/// info
/// note
參數 `response_class` 也會用來定義回應的「media type」。
@ -65,7 +65,7 @@ FastAPI 預設回傳 JSON 回應。
///
/// info
/// note
當然,實際的 `Content-Type` 標頭、狀態碼等,會來自你回傳的 `Response` 物件。

2
docs/zh-hant/docs/advanced/dataclasses.md

@ -18,7 +18,7 @@ FastAPI 建立在 **Pydantic** 之上,我之前示範過如何使用 Pydantic
它的運作方式與 Pydantic 模型相同;實際上,底層就是透過 Pydantic 達成的。
/// info
/// note
請記得,dataclass 無法做到 Pydantic 模型能做的一切。

4
docs/zh-hant/docs/advanced/events.md

@ -120,7 +120,7 @@ async with lifespan(app):
在這裡,`shutdown` 事件處理器函式會把一行文字 `"Application shutdown"` 寫入檔案 `log.txt`
/// info
/// note
`open()` 函式中,`mode="a"` 表示「append(附加)」;也就是說,這行文字會加在檔案現有內容之後,而不會覆寫先前的內容。
@ -152,7 +152,7 @@ async with lifespan(app):
在底層的 ASGI 技術規範中,這屬於 [Lifespan Protocol](https://asgi.readthedocs.io/en/latest/specs/lifespan.html) 的一部分,並定義了 `startup``shutdown` 兩種事件。
/// info
/// note
你可以在 [Starlette 的 Lifespan 文件](https://www.starlette.dev/lifespan/) 讀到更多關於 Starlette `lifespan` 處理器的資訊。

1
docs/zh-hant/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 產生器也不少,你可以在網路上找到。🤓

4
docs/zh-hant/docs/advanced/openapi-callbacks.md

@ -167,13 +167,13 @@ https://www.external.org/events/invoices/2expen51ve
此時你已經在先前建立的回呼 router 中,擁有所需的回呼「路徑操作(們)」(也就是「外部開發者」應該在「外部 API」中實作的那些)。
現在在「你的 API 的路徑操作裝飾器」中使用參數 `callbacks`,將該回呼 router 的屬性 `.routes`(實際上就是一個由路由/「路徑操作」所組成的 `list`傳入:
現在在「你的 API 的路徑操作裝飾器」中使用參數 `callbacks`,將該回呼 router 的屬性 `.routes` 傳入:
{* ../../docs_src/openapi_callbacks/tutorial001_py310.py hl[33] *}
/// tip
注意你傳給 `callback=`不是整個 router 本身(`invoices_callback_router`),而是它的屬性 `.routes`,也就是 `invoices_callback_router.routes`
注意你不是整個 router 本身(`invoices_callback_router`)傳給 `callbacks=`,而是它的 `.routes`,也就是 `invoices_callback_router.routes`FastAPI 會使用這些路由來產生回呼的 OpenAPI 文件。
///

4
docs/zh-hant/docs/advanced/openapi-webhooks.md

@ -22,7 +22,7 @@
這能讓你的使用者更容易實作他們的 API 以接收你的 webhook 請求,甚至可能自動產生部分他們自己的 API 程式碼。
/// info
/// note
Webhook 功能自 OpenAPI 3.1.0 起提供,FastAPI `0.99.0` 以上版本支援。
@ -36,7 +36,7 @@ Webhook 功能自 OpenAPI 3.1.0 起提供,FastAPI `0.99.0` 以上版本支援
你定義的 webhook 會出現在 OpenAPI 結構描述與自動產生的文件 UI 中。
/// info
/// note
`app.webhooks` 其實就是一個 `APIRouter`,與你在將應用拆分為多個檔案時所使用的型別相同。

14
docs/zh-hant/docs/advanced/path-operation-advanced-configuration.md

@ -16,21 +16,15 @@
### 使用路徑操作函式(path operation function)的名稱作為 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
如果你這樣做,必須確保每個*路徑操作函式*都有唯一的名稱
如果你這樣做,必須確保每個*路徑操作函式*都有唯一的名稱。
即使它們位於不同的模組(Python 檔案)中。

4
docs/zh-hant/docs/advanced/response-directly.md

@ -10,7 +10,7 @@
/// tip
通常使用 [回應模型](../tutorial/response-model.md) 會有更好的效能,因為那樣會在 Rust 端使用 Pydantic 來序列化資料,而不是直接回傳 `JSONResponse`
通常使用 [回應模型](../tutorial/response-model.md) 會有更好的效能,因為那樣會在 Rust 端使用 Pydantic 來序列化資料。
///
@ -18,7 +18,7 @@
其實,你可以回傳任何 `Response`,或其任何子類別。
/// info
/// note
`JSONResponse` 本身就是 `Response` 的子類別。

4
docs/zh-hant/docs/advanced/security/oauth2-scopes.md

@ -46,7 +46,7 @@ OAuth2 規格將「scopes」定義為以空白分隔的一串字串列表。
- `instagram_basic` 是 Facebook / Instagram 使用的。
- `https://www.googleapis.com/auth/drive` 是 Google 使用的。
/// info
/// note
在 OAuth2 中,「scope」只是宣告所需特定權限的一個字串。
@ -126,7 +126,7 @@ OAuth2 規格將「scopes」定義為以空白分隔的一串字串列表。
{* ../../docs_src/security/tutorial005_an_py310.py hl[5,141,172] *}
/// info | 技術細節
/// note | 技術細節
`Security` 其實是 `Depends` 的子類別,僅多了一個我們稍後會看到的參數。

4
docs/zh-hant/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` 物件已在記憶體中,讀取不會阻塞任何東西。

2
docs/zh-hant/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。

2
docs/zh-hant/docs/advanced/websockets.md

@ -111,7 +111,7 @@ $ fastapi dev
{* ../../docs_src/websockets_/tutorial002_an_py310.py hl[68:69,82] *}
/// info
/// note
因為這是 WebSocket,拋出 `HTTPException` 並沒有意義,因此我們改為拋出 `WebSocketException`

2
docs/zh-hant/docs/advanced/wsgi.md

@ -6,7 +6,7 @@
## 使用 `WSGIMiddleware` { #using-wsgimiddleware }
/// info
/// note
這需要先安裝 `a2wsgi`,例如使用 `pip install a2wsgi`

4
docs/zh-hant/docs/deployment/docker.md

@ -132,7 +132,7 @@ Successfully installed fastapi pydantic
</div>
/// info | 資訊
/// note | 注意
還有其他格式與工具可以用來定義與安裝套件相依。
@ -556,7 +556,7 @@ CMD ["fastapi", "run", "app/main.py", "--port", "80", "--workers", "4"]
如果你有「多個容器」,且每個容器大概都只執行「單一行程」(例如在一個 Kubernetes 叢集中),那你可能會想要一個「獨立的容器」來完成「前置步驟」的工作,並只在單一容器、單一行程中執行,接著才啟動多個複本的工作容器。
/// info | 資訊
/// note | 注意
如果你使用 Kubernetes,這大概會是一個 [Init Container](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/)。

24
docs/zh-hant/docs/deployment/fastapicloud.md

@ -1,26 +1,6 @@
# FastAPI Cloud { #fastapi-cloud }
你可以用「一行指令」把你的 FastAPI 應用程式部署到 [FastAPI Cloud](https://fastapicloud.com)。如果你還沒加入,快去登記等候名單吧!🚀
## 登入 { #login }
請先確認你已經有 **FastAPI Cloud** 帳號(我們已從等候名單邀請你 😉)。
然後登入:
<div class="termy">
```console
$ fastapi login
You are logged in to FastAPI Cloud 🚀
```
</div>
## 部署 { #deploy }
現在用「一行指令」部署你的應用:
你可以只用 **一個指令** 就把你的 FastAPI 應用程式部署到 [FastAPI Cloud](https://fastapicloud.com)。🚀
<div class="termy">
@ -36,6 +16,8 @@ Deploying to FastAPI Cloud...
</div>
CLI 會自動偵測你的 FastAPI 應用並將其部署到雲端。若你尚未登入,瀏覽器會自動開啟以完成驗證流程。
就這樣!現在你可以透過該 URL 造訪你的應用。✨
## 關於 FastAPI Cloud { #about-fastapi-cloud }

1
docs/zh-hant/docs/deployment/manually.md

@ -56,7 +56,6 @@ FastAPI 採用建立 Python 網頁框架與伺服器的標準 <abbr title="Async
* [Hypercorn](https://hypercorn.readthedocs.io/):支援 HTTP/2 與 Trio 等功能的 ASGI 伺服器。
* [Daphne](https://github.com/django/daphne):為 Django Channels 打造的 ASGI 伺服器。
* [Granian](https://github.com/emmett-framework/granian):針對 Python 應用的 Rust HTTP 伺服器。
* [NGINX Unit](https://unit.nginx.org/howto/fastapi/):NGINX Unit 是輕量且多功能的網頁應用執行環境。
## 伺服器機器與伺服器程式 { #server-machine-and-server-program }

2
docs/zh-hant/docs/deployment/server-workers.md

@ -17,7 +17,7 @@
這裡會示範如何使用 `fastapi` 指令或直接使用 `uvicorn` 指令,搭配 Uvicorn 的工作處理序(worker processes)。
/// info
/// note
如果你使用容器(例如 Docker 或 Kubernetes),我會在下一章說明更多:[容器中的 FastAPI - Docker](docker.md)。

12
docs/zh-hant/docs/how-to/extending-openapi.md

@ -25,9 +25,17 @@
* `openapi_version`:所使用的 OpenAPI 規格版本。預設為最新版本:`3.1.0`。
* `summary`:API 的簡短摘要。
* `description`:API 的描述,可包含 Markdown,會顯示在文件中。
* `routes`:路由列表,也就是所有已註冊的路徑操作。來源為 `app.routes`
* `routes`:路由列表,來源為 `app.routes`FastAPI 會用它們彙整已註冊的路徑操作,包含來自被包含的 routers。
/// info
/// tip | 技術細節
`app.routes` 是較低階的路由樹。它可能包含 FastAPI 內部用於被包含的 routers 的候選路由,不僅僅是最終的 `APIRoute` 物件。
你仍然可以把 `app.routes` 傳給 `get_openapi()`。FastAPI 會遍歷那棵路由樹以收集實際生效的路徑操作。
///
/// note | 注意
`summary` 參數在 OpenAPI 3.1.0 以上可用,且需 FastAPI 0.99.0 以上版本支援。

2
docs/zh-hant/docs/how-to/separate-openapi-schemas.md

@ -85,7 +85,7 @@
在這種情況下,你可以在 FastAPI 中透過參數 `separate_input_output_schemas=False` 停用這個功能。
/// info
/// note
自 FastAPI `0.102.0` 起新增 `separate_input_output_schemas` 的支援。🤓

8
docs/zh-hant/docs/index.md

@ -479,7 +479,7 @@ item: Item
* 來自不同來源的**參數**宣告:例如 **headers**、**cookies**、**form fields** 和 **files**
* 如何設定**驗證限制**,如 `maximum_length``regex`
* 一個非常強大且易用的 **<dfn title="也稱為:components、resources、providers、services、injectables">依賴注入</dfn>** 系統。
* 一個非常強大且易用的 **<dfn title="也稱為:元件、資源、提供者、服務、可注入物">依賴注入</dfn>** 系統。
* 安全與驗證,包含支援 **OAuth2** 搭配 **JWT tokens****HTTP Basic** 驗證。
* 宣告**深度巢狀 JSON 模型**的進階(但同樣簡單)技巧(感謝 Pydantic)。
* 與 [Strawberry](https://strawberry.rocks) 及其他函式庫的 **GraphQL** 整合。
@ -492,9 +492,7 @@ item: Item
### 部署你的應用(可選) { #deploy-your-app-optional }
你也可以選擇將 FastAPI 應用部署到 [FastAPI Cloud](https://fastapicloud.com),如果你還沒加入,去登記等候名單吧。🚀
如果你已經有 **FastAPI Cloud** 帳號(我們已從等候名單邀請你 😉),你可以用一個指令部署你的應用。
你可以選擇只用一個指令,將 FastAPI 應用部署到 [FastAPI Cloud](https://fastapicloud.com)。🚀
<div class="termy">
@ -510,6 +508,8 @@ Deploying to FastAPI Cloud...
</div>
CLI 會自動偵測你的 FastAPI 應用並將其部署到雲端。若你尚未登入,系統會開啟瀏覽器以完成驗證流程。
就這樣!現在你可以在該 URL 造訪你的應用。✨
#### 關於 FastAPI Cloud { #about-fastapi-cloud }

22
docs/zh-hant/docs/tutorial/bigger-applications.md

@ -396,9 +396,9 @@ from .routers.users import router
/// note | 技術細節
實際上,它會在內部為 `APIRouter` 中宣告的每一個「路徑操作」建立一個對應的「路徑操作」
當 router 被納入主應用時,FastAPI 會保留原本的 `APIRouter` 與其 `APIRoute` 仍然是活的
所以在幕後,它實際運作起來就像是一個單一的應用
這表示自訂的 `APIRouter``APIRoute` 子類別在被納入之後依然會參與運作
///
@ -406,7 +406,7 @@ from .routers.users import router
把 router 納入時不需要擔心效能。
只會在啟動時花費微秒等級,且只發生一次
個設計相當輕量,且避免為每次請求增加額外負擔
因此不會影響效能。⚡
@ -461,7 +461,7 @@ from .routers.users import router
這是因為我們要把它們的路徑操作包含進 OpenAPI 結構與使用者介面中。
由於無法將它們隔離並獨立「掛載」,所以這些路徑操作會被「複製」(重新建立),而不是直接包含進來
FastAPI 會保留原始的 routers 與路徑操作處於活躍狀態,並在處理請求與產生 OpenAPI 時,合併 router 的前綴、相依性、標籤、回應與其他中繼資料
///
@ -532,4 +532,16 @@ $ fastapi dev
router.include_router(other_router)
```
請確保在把 `router` 納入 `FastAPI` 應用之前先這麼做,這樣 `other_router` 的路徑操作也會被包含進去。
你可以在把 `router` 納入 `FastAPI` 應用的前或後這麼做。FastAPI 仍會在路由與 OpenAPI 中包含 `other_router` 的路徑操作。
同樣地,之後新增到這些 routers 的路徑操作也適用。透過先前的納入,它們也會被看見。
/// warning | 技術細節
避免在納入 router 之後直接修改 `router.routes`。FastAPI 將 router 的納入視為即時的,因此原始 router 與其 routes 仍然是路由與 OpenAPI 產生的一部分。
請使用有文件記載的 API,例如路徑操作的裝飾器與 `.include_router()` 來新增路由與 routers。
`router.routes` 視為較低階的路由樹結構,它可能同時包含路由定義與被納入的 routers,避免將它當成最終路徑操作的平lat清單來依賴。
///

4
docs/zh-hant/docs/tutorial/body-multiple-params.md

@ -108,7 +108,7 @@ q: str | None = None
{* ../../docs_src/body_multiple_params/tutorial004_an_py310.py hl[28] *}
/// info | 注意
/// note | 注意
`Body` 也具有與 `Query`、`Path` 以及之後你會看到的其他工具相同的額外驗證與中繼資料參數。
@ -123,7 +123,7 @@ q: str | None = None
但如果你想讓它像宣告多個 Body 參數時那樣,期望一個帶有 `item` 鍵、其內含模型內容的 JSON,你可以使用 `Body` 的特殊參數 `embed`
```Python
item: Item = Body(embed=True)
item: Annotated[Item, Body(embed=True)]
```
如下:

5
docs/zh-hant/docs/tutorial/body-nested-models.md

@ -134,8 +134,7 @@ my_list: list[str]
]
}
```
/// info
/// note
注意 `images` 鍵現在是一個由 image 物件組成的列表。
@ -147,7 +146,7 @@ my_list: list[str]
{* ../../docs_src/body_nested_models/tutorial007_py310.py hl[7,12,18,21,25] *}
/// info
/// note
請注意,`Offer` 具有一個 `Item` 的列表,而每個 `Item` 又有一個可選的 `Image` 列表。

2
docs/zh-hant/docs/tutorial/body.md

@ -8,7 +8,7 @@
要宣告**請求**本文,你會使用 [Pydantic](https://docs.pydantic.dev/) 模型,享受其完整的功能與優點。
/// info
/// note
要傳送資料,應使用下列其中一種方法:`POST`(最常見)、`PUT`、`DELETE` 或 `PATCH`

2
docs/zh-hant/docs/tutorial/cookie-param-models.md

@ -32,7 +32,7 @@
<img src="/img/tutorial/cookie-param-models/image01.png">
</div>
/// info
/// note
請注意,由於**瀏覽器會以特殊且在背景進行的方式處理 Cookie**,因此**不會**輕易允許 **JavaScript** 存取它們。

10
docs/zh-hant/docs/tutorial/cookie-params.md

@ -24,19 +24,19 @@
///
/// info
/// note
要宣告 cookies,你需要使用 `Cookie`,否則參數會被當作查詢參數(query parameters)來解析。
///
/// info
/// note
請注意,由於瀏覽器以特殊且在背後處理的方式管理 cookies,它們通常不允許 JavaScript 輕易存取它們。
請注意,由於**瀏覽器會以特殊方式並在背後處理 cookies**,因此**不**容易讓 **JavaScript** 觸碰到它們。
如果你前往位於 `/docs`API 文件介面,你可以在你的路徑操作(path operations)的文件中看到 cookies 的說明
如果你前往位於 `/docs`**API 文件介面**,你可以在你的*路徑操作(path operations)*中看到 cookies 的**文件**
但即使你填入資料並點擊「Execute」,由於該文件介面是以 JavaScript 運作,cookies 不會被送出,你會看到一則錯誤訊息,就好像你沒有填任何值一樣。
但即使你**填入資料**並點擊「Execute」,由於該文件介面是以 **JavaScript** 運作,cookies 不會被送出,你會看到一則**錯誤**訊息,就好像你沒有填任何值一樣。
///

2
docs/zh-hant/docs/tutorial/debugging.md

@ -72,7 +72,7 @@ from myapp import app
就不會被執行。
/// info | 說明
/// note
想了解更多,參考 [Python 官方文件](https://docs.python.org/3/library/__main__.html)。

4
docs/zh-hant/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md

@ -28,11 +28,11 @@
///
/// info
/// note
在這個範例中我們使用了自訂的(虛構的)標頭 `X-Key``X-Token`
但在實際情況下,當你實作安全機制時,使用整合的 [Security utilities(下一章)](../security/index.md) 會獲得更多好處。
但在實際情況下,當你實作安全機制時,使用整合的 [安全工具(下一章)](../security/index.md) 會獲得更多好處。
///

2
docs/zh-hant/docs/tutorial/dependencies/dependencies-with-yield.md

@ -170,7 +170,7 @@ participant tasks as Background tasks
end
```
/// info
/// note
只會向用戶端送出「一個回應」。可能是其中一個錯誤回應,或是來自該路徑操作的回應。

4
docs/zh-hant/docs/tutorial/dependencies/index.md

@ -49,7 +49,7 @@
然後它只會回傳一個包含這些值的 `dict`
/// info | 說明
/// note | 注意
FastAPI 在 0.95.0 版新增了對 `Annotated` 的支援(並開始建議使用)。
@ -104,7 +104,7 @@ common_parameters --> read_users
如此一來,你只需撰寫一次共用程式碼,**FastAPI** 會替你的各個「路徑操作」呼叫它。
/// check | 檢查
/// tip | 提示
注意,你不必建立特殊的類別並把它傳到 **FastAPI** 去「註冊」或做類似的事。

2
docs/zh-hant/docs/tutorial/dependencies/sub-dependencies.md

@ -35,7 +35,7 @@
{* ../../docs_src/dependencies/tutorial005_an_py310.py hl[23] *}
/// info
/// note
注意,在路徑操作函式中我們只宣告了一個相依項 `query_or_cookie_extractor`

34
docs/zh-hant/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` 命令列選項執行 `fastapi dev` { #fastapi-dev-with-path-or-with-entrypoint-cli-option }
你也可以把檔案路徑傳給 `fastapi dev` 指令,它會自動猜測要使用的 FastAPI app 物件:
@ -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** 帳號(我們已從候補名單邀請你 😉),你可以用一個指令部署你的應用程式。
部署之前,先確保你已登入:
<div class="termy">
或者,你也可以把 `--entrypoint` 選項傳給 `fastapi dev` 指令:
```console
$ fastapi login
You are logged in to FastAPI Cloud 🚀
$ fastapi dev --entrypoint main:app
```
</div>
但這樣每次執行 `fastapi` 指令時都要記得傳入正確的路徑\entrypoint。
此外,其他工具可能找不到它,例如 [VS Code 擴充套件](../editor-support.md) 或 [FastAPI Cloud](https://fastapicloud.com),因此建議在 `pyproject.toml` 中使用 `entrypoint`
接著部署你的應用程式:
### 部署你的應用程式(可選) { #deploy-your-app-optional }
你可以選擇將你的 FastAPI 應用程式部署到 [FastAPI Cloud](https://fastapicloud.com),只要一行指令。🚀
<div class="termy">
@ -226,6 +216,8 @@ Deploying to FastAPI Cloud...
</div>
CLI 會自動偵測你的 FastAPI 應用並將它部署到雲端。若你尚未登入,瀏覽器會開啟以完成驗證流程。
就這樣!現在你可以透過該 URL 存取你的應用程式了。✨
## 逐步回顧 { #recap-step-by-step }
@ -270,7 +262,7 @@ https://example.com/items/foo
/items/foo
```
/// info
/// note
「路徑」也常被稱為「端點 endpoint」或「路由 route」。
@ -322,7 +314,7 @@ https://example.com/items/foo
* 路徑 `/`
* 使用 <dfn title="HTTP GET 方法"><code>get</code> 操作</dfn>
/// info | `@decorator` 說明
/// note | `@decorator` 說明
Python 中的 `@something` 語法被稱為「裝飾器」。

4
docs/zh-hant/docs/tutorial/metadata.md

@ -74,9 +74,9 @@
{* ../../docs_src/metadata/tutorial004_py310.py hl[21,26] *}
/// info | 資訊
/// note | 注意
在 [Path Operation Configuration](path-operation-configuration.md#tags) 中閱讀更多關於標籤的內容。
在 [路徑操作設定](path-operation-configuration.md#tags) 中閱讀更多關於標籤的內容。
///

4
docs/zh-hant/docs/tutorial/path-operation-configuration.md

@ -72,13 +72,13 @@
{* ../../docs_src/path_operation_configuration/tutorial005_py310.py hl[18] *}
/// info | 資訊
/// note | 注意
請注意,`response_description` 專指回應,而 `description` 則是針對整個「路徑操作」的一般描述。
///
/// check | 檢查
/// tip
OpenAPI 規範要求每個「路徑操作」都必須有一個回應描述。

4
docs/zh-hant/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` 的子類別。

8
docs/zh-hant/docs/tutorial/path-params.md

@ -20,7 +20,7 @@
在這個例子裡,`item_id` 被宣告為 `int`
/// check
/// tip
這會在你的函式中提供編輯器支援,包括錯誤檢查、自動完成等。
@ -34,7 +34,7 @@
{"item_id":3}
```
/// check
/// tip
注意你的函式接收(並回傳)的值是 `3`,也就是 Python 的 `int`,而不是字串 `"3"`
@ -66,7 +66,7 @@
同樣的錯誤也會在你提供 `float` 而不是 `int` 時出現,例如:[http://127.0.0.1:8000/items/4.2](http://127.0.0.1:8000/items/4.2)
/// check
/// tip
因此,搭配相同的 Python 型別宣告,**FastAPI** 會為你進行資料驗證。
@ -82,7 +82,7 @@
<img src="/img/tutorial/path-params/image01.png">
/// check
/// tip
同樣地,只要使用那個 Python 型別宣告,**FastAPI** 就會提供自動、互動式的文件(整合 Swagger UI)。

8
docs/zh-hant/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`
@ -167,7 +167,7 @@ q: str = Query(default="rick")
## 加入正規表示式 { #add-regular-expressions }
你可以定義參數必須符合的 <dfn title="正規表示式(regex、regexp)是一組用於定義字串搜尋樣式的字元序列。">regular expression</dfn> `pattern`
你可以定義參數必須符合的 <dfn title="正規表示式(regex、regexp)是一組用於定義字串搜尋樣式的字元序列。">正規表示式</dfn> `pattern`
{* ../../docs_src/query_params_str_validations/tutorial004_an_py310.py hl[11] *}
@ -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 或以上版本。😎
@ -411,7 +411,7 @@ Pydantic 也有 [`BeforeValidator`](https://docs.pydantic.dev/latest/concepts/va
#### 隨機項目 { #a-random-item }
透過 `data.items()` 我們會得到一個包含每個字典項目鍵值對 tuple 的 <dfn title="可以用 for 迴圈遍歷的東西,例如 list、set 等等。">iterable object</dfn>
透過 `data.items()` 我們會得到一個包含每個字典項目鍵值對 tuple 的 <dfn title="可以用 for 迴圈遍歷的東西,例如 list、set 等等。">可疊代物件</dfn>
我們用 `list(data.items())` 把這個可疊代物件轉成正式的 `list`

2
docs/zh-hant/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` 不是,因此 `q` 會被當作查詢參數。

4
docs/zh-hant/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` 的類別。

2
docs/zh-hant/docs/tutorial/request-form-models.md

@ -2,7 +2,7 @@
你可以使用 **Pydantic 模型** 在 FastAPI 中宣告 **表單欄位**
/// info | 說明
/// note | 注意
要使用表單,首先安裝 [`python-multipart`](https://github.com/Kludex/python-multipart)。

2
docs/zh-hant/docs/tutorial/request-forms-and-files.md

@ -2,7 +2,7 @@
你可以使用 `File``Form` 同時定義檔案與表單欄位。
/// info
/// note
要接收上傳的檔案與/或表單資料,請先安裝 [`python-multipart`](https://github.com/Kludex/python-multipart)。

4
docs/zh-hant/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`)相同的設定,包括驗證、範例、別名(例如用 `user-name` 取代 `username`)等。
/// info
/// note
`Form` 是一個直接繼承自 `Body` 的類別。

4
docs/zh-hant/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)。
@ -251,7 +251,7 @@ FastAPI 在內部會搭配 Pydantic 做一些事情,來確保不會把類別
}
```
/// info | 說明
/// note | 注意
你也可以使用:

4
docs/zh-hant/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)。
@ -27,7 +27,7 @@
它會:
* 在回應中傳回該狀態碼。
* 在 OpenAPI 構中如此記錄(因此也會反映在使用者介面中):
* 在 OpenAPI 構中如此記錄(因此也會反映在使用者介面中):
<img src="/img/tutorial/response-status-code/image01.png">

6
docs/zh-hant/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 版起支援 🎉)。

10
docs/zh-hant/docs/tutorial/security/first-steps.md

@ -24,7 +24,7 @@
## 執行 { #run-it }
/// info
/// note
當你使用 `pip install "fastapi[standard]"` 指令安裝時,[`python-multipart`](https://github.com/Kludex/python-multipart) 套件會隨 FastAPI 自動安裝。
@ -60,7 +60,7 @@ $ fastapi dev
<img src="/img/tutorial/security/image01.png">
/// check | Authorize 按鈕!
/// tip | Authorize 按鈕!
你會看到一個新的「Authorize」按鈕。
@ -118,7 +118,7 @@ FastAPI 提供多層抽象的工具來實作這些安全機制。
本例將使用 OAuth2 的 Password 流程,並以 Bearer token 進行驗證;我們會用 `OAuth2PasswordBearer` 類別來完成。
/// info
/// note
「Bearer」token 不是唯一選項。
@ -148,7 +148,7 @@ FastAPI 提供多層抽象的工具來實作這些安全機制。
我們很快也會建立實際的路徑操作。
/// 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`

2
docs/zh-hant/docs/tutorial/security/get-current-user.md

@ -52,7 +52,7 @@
///
/// check | 檢查
/// tip | 提示
這個依賴系統的設計讓我們可以有不同的依賴(不同的 "dependables"),都回傳 `User` 模型。

4
docs/zh-hant/docs/tutorial/security/oauth2-jwt.md

@ -42,7 +42,7 @@ $ pip install pyjwt
</div>
/// info | 說明
/// note | 注意
如果你打算使用像 RSA 或 ECDSA 這類的數位簽章演算法,應該安裝帶有加密函式庫相依的 `pyjwt[crypto]`
@ -213,7 +213,7 @@ JWT 除了用來識別使用者並允許他直接對你的 API 執行操作外
Username: `johndoe`
Password: `secret`
/// check | 檢查
/// tip | 提示
注意在程式碼中完全沒有明文密碼「`secret`」,我們只有雜湊後的版本。

10
docs/zh-hant/docs/tutorial/security/simple-oauth2.md

@ -32,7 +32,7 @@ OAuth2 規範中,當使用「password flow」(我們現在使用的)時,
- `instagram_basic` 用在 Facebook / Instagram
- `https://www.googleapis.com/auth/drive` 用在 Google
/// info
/// note
在 OAuth2 裡,「scope」只是用來宣告特定所需權限的一個字串。
@ -72,7 +72,7 @@ OAuth2 規範中,當使用「password flow」(我們現在使用的)時,
- 可選的 `client_id`(本例不需要)
- 可選的 `client_secret`(本例不需要)
/// info
/// note
`OAuth2PasswordRequestForm` 並不是像 `OAuth2PasswordBearer` 那樣對 **FastAPI** 來說的特殊類別。
@ -128,7 +128,7 @@ OAuth2 規範中,當使用「password flow」(我們現在使用的)時,
{* ../../docs_src/security/tutorial003_an_py310.py hl[82:85] *}
#### 關於 `**user_dict**` { #about-user-dict }
#### 關於 `**user_dict` { #about-user-dict }
`UserInDB(**user_dict)` 的意思是:
@ -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`,這也是規範的一部分。

2
docs/zh-hant/docs/tutorial/server-sent-events.md

@ -4,7 +4,7 @@
這與[串流 JSON Lines](stream-json-lines.md)類似,但使用瀏覽器原生支援、透過 [`EventSource` API](https://developer.mozilla.org/en-US/docs/Web/API/EventSource) 的 `text/event-stream` 格式。
/// info
/// note
在 FastAPI 0.135.0 新增。

4
docs/zh-hant/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
重點在於你的應用能夠逐行產生資料,同時用戶端在消耗前一行的資料。

4
docs/zh-hant/docs/tutorial/testing.md

@ -8,7 +8,7 @@
## 使用 `TestClient` { #using-testclient }
/// info
/// note
要使用 `TestClient`,請先安裝 [`httpx`](https://www.python-httpx.org)。
@ -144,7 +144,7 @@ $ pip install httpx
關於如何把資料傳給後端(使用 `httpx``TestClient`),更多資訊請參考 [HTTPX 文件](https://www.python-httpx.org)。
/// info
/// note
請注意,`TestClient` 接收的是可轉為 JSON 的資料,而不是 Pydantic models。

Loading…
Cancel
Save