fastapi/docs/pt/docs/tutorial/cookie-param-models.md

3.4 KiB

Modelos de Parâmetros de Cookie

Se você possui um grupo de cookies que estão relacionados, você pode criar um modelo Pydantic para declará-los. 🍪

Isso lhe permitiria reutilizar o modelo em diversos lugares e também declarar validações e metadata para todos os parâmetros de uma vez. 😎

/// note | Nota

Isso é suportado desde a versão 0.115.0 do FastAPI. 🤓

///

/// tip | Dica

Essa mesma técnica se aplica para Query, Cookie, e Header. 😎

///

Cookies com Modelos Pydantic

Declare o parâmetro de cookie que você precisa em um modelo Pydantic, e depois declare o parâmetro como um Cookie:

{* ../../docs_src/cookie_param_models/tutorial001_an_py310.py hl[9:12,16] *}

O FastAPI irá extrair os dados para cada campo dos cookies recebidos na requisição e lhe fornecer o modelo Pydantic que você definiu.

Verifique a Documentação

Você pode ver os cookies definidos na IU da documentação em /docs:

/// info | Informação

Tenha em mente que, como os navegadores lidam com cookies de maneira especial e por baixo dos panos, eles não permitem facilmente que o JavaScript lidem com eles.

Se você for na IU da documentação da API em /docs você poderá ver a documentação para cookies das suas operações de rotas.

Mas mesmo que você adicionar os dados e clicar em "Executar", pelo motivo da IU da documentação trabalhar com JavaScript, os cookies não serão enviados, e você verá uma mensagem de erro como se você não tivesse escrito nenhum dado.

///

Proibir Cookies Adicionais

Em alguns casos especiais (provavelmente não muito comuns), você pode querer restringir os cookies que você deseja receber.

Agora a sua API possui o poder de controlar o seu próprio consentimento de cookie. 🤪🍪

Você pode utilizar a configuração do modelo Pydantic para proibir qualquer campo extra:

{* ../../docs_src/cookie_param_models/tutorial002_an_py310.py hl[10] *}

Se o cliente tentar enviar alguns cookies extras, eles receberão um retorno de erro.

Coitados dos banners de cookies com todo o seu esforço para obter o seu consentimento para a API rejeitá-lo. 🍪

Por exemplo, se o cliente tentar enviar um cookie santa_tracker com o valor de good-list-please, o cliente receberá uma resposta de erro informando que o santa_tracker cookie não é permitido:

{
    "detail": [
        {
            "type": "extra_forbidden",
            "loc": ["cookie", "santa_tracker"],
            "msg": "Extra inputs are not permitted",
            "input": "good-list-please",
        }
    ]
}

Resumo

Você consegue utilizar modelos Pydantic para declarar cookies no FastAPI. 😎