Перейти до змісту

Параметри Cookie

Ви можете визначати параметри Cookie таким же чином, як визначаються параметри Query і Path.

Спочатку імпортуйте 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}

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, використовуючи таку ж конструкцію як для Path і Query.

Ви можете визначити значення за замовчуванням, а також усі додаткові параметри валідації чи анотації:

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}

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 це "сестра" класів Path і Query. Вони також наслідуються від одного спільного класу Param.

Але пам'ятайте, що коли ви імпортуєте Query, Path, Cookie та інше з fastapi, це фактично функції, що повертають спеціальні класи.

Info

Для визначення cookies ви маєте використовувати Cookie, тому що в іншому випадку параметри будуть інтерпритовані, як параметри запиту.

Info

Майте на увазі, що оскільки браузери обробляють cookies спеціальним чином і за лаштунками, вони не дозволяють JavaScript легко взаємодіяти з ними.

Якщо ви перейдете до інтерфейсу документації API за адресою /docs, ви зможете побачити документацію для cookies для ваших операцій шляху.

Але навіть якщо ви заповните дані і натиснете "Execute", оскільки інтерфейс документації працює з JavaScript, cookies не буде надіслано, і ви побачите повідомлення про помилку, ніби ви не ввели жодних значень.

Підсумки

Визначайте cookies за допомогою Cookie, використовуючи той же спільний шаблон, що і Query та Path.