Back to Fastapi

回應 - 變更狀態碼 { #response-change-status-code }

docs/zh-hant/docs/advanced/response-change-status-code.md

0.138.11.5 KB
Original Source

回應 - 變更狀態碼 { #response-change-status-code }

你可能已經讀過,可以設定預設的回應狀態碼

但有些情況你需要回傳與預設不同的狀態碼。

使用情境 { #use-case }

例如,假設你預設想回傳 HTTP 狀態碼 "OK" 200

但如果資料不存在,你想要建立它,並回傳 HTTP 狀態碼 "CREATED" 201

同時你仍希望能用 response_model 過濾並轉換所回傳的資料。

在這些情況下,你可以使用 Response 參數。

使用 Response 參數 { #use-a-response-parameter }

你可以在你的路徑操作函式(path operation function)中宣告一個 Response 型別的參數(就像你可以對 Cookies 和標頭那樣)。

接著你可以在那個「暫時的」回應物件上設定 status_code

{* ../../docs_src/response_change_status_code/tutorial001_py310.py hl[1,9,12] *}

然後你可以照常回傳任何需要的物件(例如 dict、資料庫模型等)。

若你宣告了 response_model,它仍會被用來過濾並轉換你回傳的物件。

FastAPI 會使用那個「暫時的」回應來取得狀態碼(以及 Cookies 和標頭),並將它們放入最終回應中;最終回應包含你回傳的值,且會被任何 response_model 過濾。

你也可以在相依性(dependencies)中宣告 Response 參數,並在其中設定狀態碼。但請注意,最後被設定的值會生效。