Skip to content

Cookie 參數

🌐 AI 與人類共同完成的翻譯

此翻譯由人類指導的 AI 完成。🤝

可能會有對原意的誤解,或讀起來不自然等問題。🤖

你可以透過協助我們更好地引導 AI LLM來改進此翻譯。

英文版

你可以用與定義 QueryPath 參數相同的方式定義 Cookie 參數。

先匯入 Cookie

from typing import Annotated

from fastapi import Cookie, FastAPI

app = FastAPI()


@app.get("/items/")
async def read_items(ads_id: Annotated[str | None, Cookie()] = None):
    return {"ads_id": ads_id}
🤓 Other versions and variants

Tip

Prefer to use the Annotated version if possible.

from fastapi import Cookie, FastAPI

app = FastAPI()


@app.get("/items/")
async def read_items(ads_id: str | None = Cookie(default=None)):
    return {"ads_id": ads_id}

然後用與 PathQuery 相同的結構宣告 Cookie 參數。

你可以設定預設值,以及所有額外的驗證或註解參數:

from typing import Annotated

from fastapi import Cookie, FastAPI

app = FastAPI()


@app.get("/items/")
async def read_items(ads_id: Annotated[str | None, Cookie()] = None):
    return {"ads_id": ads_id}
🤓 Other versions and variants

Tip

Prefer to use the Annotated version if possible.

from fastapi import Cookie, FastAPI

app = FastAPI()


@app.get("/items/")
async def read_items(ads_id: str | None = Cookie(default=None)):
    return {"ads_id": ads_id}

技術細節

CookiePathQuery 的「姊妹」類別。它同樣繼承自共同的 Param 類別。

但請記住,當你從 fastapi 匯入 QueryPathCookie 等時,它們實際上是回傳特殊類別的函式。

Info

要宣告 cookies,你需要使用 Cookie,否則參數會被當作查詢參數(query parameters)來解析。

Info

請注意,由於瀏覽器以特殊且在背後處理的方式管理 cookies,它們通常不允許 JavaScript 輕易存取它們。

如果你前往位於 /docs 的 API 文件介面,你可以在你的路徑操作(path operations)的文件中看到 cookies 的說明。

但即使你填入資料並點擊「Execute」,由於該文件介面是以 JavaScript 運作,cookies 不會被送出,你會看到一則錯誤訊息,就好像你沒有填任何值一樣。

總結

使用 Cookie 來宣告 cookies,遵循與 QueryPath 相同的通用寫法。