Cookie-Parameter¶
Sie können Cookie-Parameter auf die gleiche Weise definieren wie Query- und Path-Parameter.
Cookie importieren¶
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}
Cookie-Parameter deklarieren¶
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.