Atualizado: 10/11/2024

Cookies - FastAPI

Configurando Cookies

No FastAPI, a configuração de cookies no servidor pode ser feita usando o método set_cookie, que está disponível no objeto Response e em suas subclasses. Este método aceita os seguintes parâmetros:

  • key: Nome ou identificador do cookie. É um parâmetro obrigatório.

  • value: Valor do cookie. Por padrão, é uma string vazia.

  • max_age: Tempo de vida do cookie em segundos. Pode ser um número ou None. Quando definido como None, o cookie terá validade apenas durante a sessão atual do navegador (comportamento padrão).

  • expires: Data ou momento em que o cookie expira. Assim como max_age, pode ser um número ou None. O padrão é limitar o cookie à sessão atual do navegador.

  • path: o caminho da URL no qual o cookie será válido. O valor padrão é /, que representa a raiz da aplicação.

  • domain: Domínio ao qual o cookie se aplica. O padrão é None.

  • secure: Indica se o cookie será enviado somente em conexões HTTPS. Quando configurado como True, o cookie será transmitido apenas em solicitações seguras. O padrão é False.

  • httponly: Define se o cookie estará acessível a scripts JavaScript no cliente. Quando configurado como True, o cookie será inacessível ao JavaScript, protegendo-o contra ataques como XSS. O padrão é False.

  • samesite: Controla o envio de cookies em solicitações cross-origin (entre domínios). O valor padrão é lax, que restringe o envio do cookie na maioria dos cenários cross-origin.

O exemplo a seguir demonstra como configurar um cookie chamado last_visit, que armazena a data e hora do último acesso ao site:

from fastapi import FastAPI, Response
from datetime import datetime

app = FastAPI()

@app.get("/")
def root(response: Response):
    now = datetime.now()  # Obtém a data e hora atuais
    response.set_cookie(key="last_visit", value=now.isoformat())
    return {"message": "Cookie configurado"}

Nesse caso, o cookie last_visit contém a data e a hora do último acesso do usuário. Esse valor pode ser visualizado nas ferramentas de desenvolvedor do navegador.

Configurando Cookies com FastAPI: Exemplo de cookie last_visit armazenando a data e hora do último acesso do usuário

Também é possível configurar cookies criando um objeto Response explicitamente. Veja o exemplo:

from fastapi import FastAPI
from fastapi.responses import JSONResponse
from datetime import datetime

app = FastAPI()

@app.get("/")
def root():
    now = datetime.now()  # Obtém a data e hora atuais
    response = JSONResponse(content={"message": "Cookie configurado"})
    response.set_cookie(key="last_visit", value=now.isoformat())
    return response

Aqui, criamos uma resposta JSON explícita e adicionamos o cookie last_visit diretamente ao objeto de resposta antes de retorná-lo.

Obtendo Cookies

Para acessar cookies no servidor, o FastAPI fornece o objeto Cookie, que pode ser utilizado para vincular valores de cookies aos parâmetros da função. Veja como acessar o cookie last_visit previamente configurado:

from fastapi import FastAPI, Cookie

app = FastAPI()

@app.get("/")
def root(last_visit: str = Cookie()):
    return {"last visit": last_visit}

Nesse exemplo, o valor do cookie last_visit é extraído da solicitação e retornado na resposta.

Recebendo Cookie com FastAPI: Exemplo de cookie last_visit sendo extraído da solicitação e retornado na resposta

Lidando com Cookies Opcionais

Se o cookie for obrigatório e não estiver presente na solicitação, o FastAPI lançará uma exceção. Para evitar isso, você pode definir um valor padrão, como None, para lidar com situações onde o cookie pode estar ausente:

from fastapi import FastAPI, Cookie

app = FastAPI()

@app.get("/")
def root(last_visit: str | None = Cookie(default=None)):
    if last_visit is None:
        return {"message": "Este é o seu primeiro acesso ao site"}
    else:
        return {"message": f"Seu último acesso foi em: {last_visit}"}

Nesse caso, se o cookie last_visit não estiver presente na solicitação, o servidor retornará uma mensagem indicando que é o primeiro acesso do usuário. Caso contrário, será retornada a data e hora do último acesso.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com