Enviando e Recebendo Headers - FastAPI

Enviando Headers

No FastAPI, para incluir um header em uma resposta, utilizamos o parâmetro headers do construtor da classe Response (ou de suas subclasses). Esse parâmetro recebe um dicionário onde as chaves representam os nomes dos headers e os valores correspondem ao conteúdo dos mesmos. Veja o exemplo:

from fastapi import FastAPI, Response

app = FastAPI()

@app.get("/")
def root():
    data = "Hello Programício!"
    return Response(content=data, media_type="text/plain", headers={"Secret-Code": "061636"})
Exemplo de envio de headers em uma resposta no FastAPI

No exemplo acima, o cliente recebe um header personalizado chamado Secret-Code com o valor 061636.

Outra maneira de adicionar headers é utilizando diretamente o atributo headers da classe Response. Esse atributo funciona como um dicionário no qual as chaves representam os nomes dos headers. Veja como fazer:

from fastapi import FastAPI, Response

app = FastAPI()

@app.get("/")
def root(response: Response):
    response.headers["Secret-Code"] = "061636"
    return {"message": "Hello Programício!"}

Nessa abordagem, o objeto Response é passado explicitamente como um parâmetro para a função que processa a rota.

Recebendo Headers

Para acessar os headers de uma requisição no FastAPI, utilizamos a classe fastapi.Header. Essa abordagem permite mapear os valores dos headers diretamente para os parâmetros da função que processa a rota. Por exemplo, para capturar o valor do header User-Agent, usamos o seguinte código:

from fastapi import FastAPI, Header

app = FastAPI()

@app.get("/")
def root(user_agent: str = Header()):
    return {"User-Agent": user_agent}

Nesse caso, o nome do parâmetro da função (user_agent) deve refletir o nome do header esperado, mas com uma diferença importante: traços no nome do header (como em User-Agent) são substituídos por underscores (_).

Exemplo de recebimento de headers no FastAPI

Se o header esperado não estiver presente na requisição, podemos definir um valor padrão para o parâmetro, como None. Isso garante que a aplicação continue funcionando mesmo que o header não seja enviado:

from fastapi import FastAPI, Header

app = FastAPI()

@app.get("/")
def root(secret_code: str | None = Header(default=None)):
    return {"Secret-Code": secret_code}

No exemplo acima, caso o header Secret-Code não seja enviado pelo cliente, o valor padrão None será utilizado.

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