Saltar a contenido

Headers de Response

🌐 Translation by AI and humans

This translation was made by AI guided by humans. 🤝

It could have mistakes of misunderstanding the original meaning, or looking unnatural, etc. 🤖

You can improve this translation by helping us guide the AI LLM better.

English version

Usa un parámetro Response

Puedes declarar un parámetro de tipo Response en tu path operation function (como puedes hacer para cookies).

Y luego puedes establecer headers en ese objeto de response temporal.

from fastapi import FastAPI, Response

app = FastAPI()


@app.get("/headers-and-object/")
def get_headers(response: Response):
    response.headers["X-Cat-Dog"] = "alone in the world"
    return {"message": "Hello World"}

Y luego puedes devolver cualquier objeto que necesites, como harías normalmente (un dict, un modelo de base de datos, etc).

Y si declaraste un response_model, aún se usará para filtrar y convertir el objeto que devolviste.

FastAPI usará ese response temporal para extraer los headers (también cookies y el código de estado), y los pondrá en el response final que contiene el valor que devolviste, filtrado por cualquier response_model.

También puedes declarar el parámetro Response en dependencias y establecer headers (y cookies) en ellas.

Retorna una Response directamente

También puedes agregar headers cuando devuelves un Response directamente.

Crea un response como se describe en Retorna un Response Directamente y pasa los headers como un parámetro adicional:

from fastapi import FastAPI
from fastapi.responses import JSONResponse

app = FastAPI()


@app.get("/headers/")
def get_headers():
    content = {"message": "Hello World"}
    headers = {"X-Cat-Dog": "alone in the world", "Content-Language": "en-US"}
    return JSONResponse(content=content, headers=headers)

Detalles Técnicos

También podrías usar from starlette.responses import Response o from starlette.responses import JSONResponse.

FastAPI proporciona las mismas starlette.responses como fastapi.responses solo por conveniencia para ti, el desarrollador. Pero la mayoría de los responses disponibles provienen directamente de Starlette.

Y como el Response se puede usar frecuentemente para establecer headers y cookies, FastAPI también lo proporciona en fastapi.Response.

Headers Personalizados

Ten en cuenta que los headers propietarios personalizados se pueden agregar usando el prefijo X-.

Pero si tienes headers personalizados que quieres que un cliente en un navegador pueda ver, necesitas agregarlos a tus configuraciones de CORS (leer más en CORS (Cross-Origin Resource Sharing)), usando el parámetro expose_headers documentado en la documentación CORS de Starlette.