Ir para o conteúdo

Parâmetros de Cookie

Você pode definir parâmetros de Cookie da mesma maneira que define parâmetros com Query e Path.

Primeiro importe 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}

Então declare os parâmetros de cookie usando a mesma estrutura que em Path e Query.

Você pode definir o valor padrão, assim como todas as validações extras ou parâmetros de anotação:

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}

Detalhes Técnicos

Cookie é uma classe "irmã" de Path e Query. Ela também herda da mesma classe em comum Param.

Mas lembre-se que quando você importa Query, Path, Cookie e outras de fastapi, elas são na verdade funções que retornam classes especiais.

Informação

Para declarar cookies, você precisa usar Cookie, pois caso contrário, os parâmetros seriam interpretados como parâmetros de consulta.

Informação

Tenha em mente que, como os navegadores lidam com cookies de maneiras especiais e nos bastidores, eles não permitem facilmente que o JavaScript os acesse.

Se você for à interface de documentação da API em /docs, poderá ver a documentação de cookies para suas operações de rota.

Mas mesmo que você preencha os dados e clique em "Execute", como a interface de documentação funciona com JavaScript, os cookies não serão enviados e você verá uma mensagem de erro como se você não tivesse escrito nenhum valor.

Recapitulando

Declare cookies com Cookie, usando o mesmo padrão comum que utiliza-se em Query e Path.