@ -1,5 +1,6 @@
# 額外的狀態碼 { #additional-status-codes }
在預設情況下,**FastAPI** 會使用 `JSONResponse` 傳回回應,並把你從你的「路徑操作(path operation)」回傳的內容放進該 `JSONResponse` 中。
它會使用預設的狀態碼,或你在路徑操作中設定的狀態碼。
# 進階相依 { #advanced-dependencies }
## 參數化的相依 { #parameterized-dependencies }
到目前為止看到的相依都是固定的函式或類別。
# 生命週期事件 { #lifespan-events }
你可以定義在應用程式**啟動**之前要執行的邏輯(程式碼)。也就是說,這段程式碼會在應用開始接收請求**之前**、**只執行一次**。
同樣地,你也可以定義在應用程式**關閉**時要執行的邏輯(程式碼)。在這種情況下,這段程式碼會在處理了**許多請求**之後、**只執行一次**。
# 回應 - 變更狀態碼 { #response-change-status-code }
你可能已經讀過,可以設定預設的[回應狀態碼](../tutorial/response-status-code.md)。
但有些情況你需要回傳與預設不同的狀態碼。
# 包含 WSGI:Flask、Django 等 { #including-wsgi-flask-django-others }
你可以像在 [子應用程式 - 掛載](sub-applications.md)、[在 Proxy 後方](behind-a-proxy.md) 中所見那樣掛載 WSGI 應用。
為此,你可以使用 `WSGIMiddleware` 來包住你的 WSGI 應用,例如 Flask、Django 等。
# 部署概念 { #deployments-concepts }
當你要部署一個 FastAPI 應用,或其實任何類型的 Web API 時,有幾個你可能在意的概念。掌握這些概念後,你就能找出最適合部署你應用的方式。
一些重要的概念包括:
# 關於 HTTPS { #about-https }
人們很容易以為 HTTPS 只是「啟用或未啟用」的功能。
但實際上複雜得多。
# 編輯器支援 { #editor-support }
官方的 [FastAPI 擴充套件](https://marketplace.visualstudio.com/items?itemName=FastAPILabs.fastapi-vscode) 透過支援路徑操作(path operation)探索、導覽,以及 FastAPI Cloud 部署與即時日誌串流,強化你的 FastAPI 開發流程。
想了解更多關於此擴充套件的細節,請參考其 [GitHub 儲存庫](https://github.com/fastapi/fastapi-vscode) 中的 README。
# 環境變數 { #environment-variables }
/// tip
如果你已經知道什麼是「環境變數」並且知道如何使用它們,你可以放心跳過這一部分。
# 協助 { #help }
你想要協助 FastAPI,或取得關於 FastAPI 的協助嗎?
有一些非常簡單的方式可以提供協助並取得協助。
# 全端 FastAPI 範本 { #full-stack-fastapi-template }
範本通常附帶特定的設定,但設計上具有彈性且可自訂。這讓你可以依專案需求調整與擴充,因此非常適合作為起點。🏁
你可以使用此範本快速起步,裡面已替你完成大量初始設定、安全性、資料庫,以及部分 API 端點。
@ -17,16 +17,16 @@ FastAPI 提供了一個方便的工具,讓你在維持彈性的同時,幫你
```
.
├── app
│ ├── __init__.py
│ ├── main.py
│ ├── dependencies.py
│ └── routers
│ │ ├── __init__.py
│ │ ├── items.py
│ │ └── users.py
│ └── internal
│ └── admin.py
/// tip | 提示
# Body - 巢狀模型 { #body-nested-models }
使用 **FastAPI**,你可以定義、驗證、文件化,並使用任意深度的巢狀模型(感謝 Pydantic)。
## 列表欄位 { #list-fields }
# 偵錯 { #debugging }
你可以在編輯器中連接偵錯器,例如 Visual Studio Code 或 PyCharm。
## 呼叫 `uvicorn` { #call-uvicorn }
# 額外的資料型別 { #extra-data-types }
到目前為止,你一直在使用常見的資料型別,例如:
* `int`
# 路徑操作設定 { #path-operation-configuration }
你可以在你的「路徑操作裝飾器」中傳入多個參數來進行設定。
/// warning | 警告
# 請求中的檔案 { #request-files }
你可以使用 `File` 定義由用戶端上傳的檔案。
/// note
# 表單資料 { #form-data }
當你需要接收表單欄位而不是 JSON 時,可以使用 `Form`。
# 回應狀態碼 { #response-status-code }
就像你可以指定回應模型一樣,你也可以在任一個「路徑操作(path operation)」的參數 `status_code` 中宣告回應所使用的 HTTP 狀態碼:
* `@app.get()`