Zum Inhalt

Cookie-Parameter

Sie können Cookie-Parameter auf die gleiche Weise definieren wie Query- und Path-Parameter.

Importieren Sie zuerst 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
from typing import Annotated, Union

from fastapi import Cookie, FastAPI

app = FastAPI()


@app.get("/items/")
async def read_items(ads_id: Annotated[Union[str, None], Cookie()] = None):
    return {"ads_id": ads_id}
from typing import Union

from fastapi import Cookie, FastAPI
from typing_extensions import Annotated

app = FastAPI()


@app.get("/items/")
async def read_items(ads_id: Annotated[Union[str, None], Cookie()] = None):
    return {"ads_id": ads_id}

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}

Tip

Prefer to use the Annotated version if possible.

from typing import Union

from fastapi import Cookie, FastAPI

app = FastAPI()


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

Deklarieren Sie dann die Cookie-Parameter mit derselben Struktur wie bei Path und Query.

Sie können den Defaultwert sowie alle zusätzlichen Validierungen oder Annotierungsparameter definieren:

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
from typing import Annotated, Union

from fastapi import Cookie, FastAPI

app = FastAPI()


@app.get("/items/")
async def read_items(ads_id: Annotated[Union[str, None], Cookie()] = None):
    return {"ads_id": ads_id}
from typing import Union

from fastapi import Cookie, FastAPI
from typing_extensions import Annotated

app = FastAPI()


@app.get("/items/")
async def read_items(ads_id: Annotated[Union[str, None], Cookie()] = None):
    return {"ads_id": ads_id}

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}

Tip

Prefer to use the Annotated version if possible.

from typing import Union

from fastapi import Cookie, FastAPI

app = FastAPI()


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

Technische Details

Cookie ist eine „Schwester“-Klasse von Path und Query. Sie erbt auch von derselben gemeinsamen Param-Klasse.

Aber denken Sie daran, dass, wenn Sie Query, Path, Cookie und andere von fastapi importieren, diese tatsächlich Funktionen sind, die spezielle Klassen zurückgeben.

Info

Um Cookies zu deklarieren, müssen Sie Cookie verwenden, da die Parameter sonst als Query-Parameter interpretiert würden.

Info

Beachten Sie, dass Browser Cookies auf besondere Weise und hinter den Kulissen handhaben und JavaScript nicht ohne Weiteres erlauben, auf sie zuzugreifen.

Wenn Sie zur API-Dokumentations-UI unter /docs gehen, können Sie die Dokumentation zu Cookies für Ihre Pfadoperationen sehen.

Aber selbst wenn Sie die Daten ausfüllen und auf „Execute“ klicken, da die Dokumentations-UI mit JavaScript arbeitet, werden die Cookies nicht gesendet, und Sie sehen eine Fehler-Meldung, als hätten Sie keine Werte eingegeben.

Zusammenfassung

Deklarieren Sie Cookies mit Cookie und verwenden Sie dabei das gleiche allgemeine Muster wie bei Query und Path.