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.
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.