Basado en mi pregunta anterior , ahora necesito agregar un encabezado a la respuesta.
De acuerdo con la documentación , simplemente puedo agregar los encabezados y otro atributo al objeto RedirectResponse .
Cuando pruebo esto, no parece transferir el valor del encabezado.
De acuerdo con esta publicación , es imposible establecer encabezados para una solicitud de redireccionamiento. Entonces, en lugar de una redirección, ¿tal vez debería intentar algo más?
¿Algunas ideas?
from fastapi import FastAPI, Request from starlette.responses import RedirectResponse app = FastAPI() @app.get("/data/") async def api_data(request: Request): params = str(request.query_params) url = f'http://some.other.api/{params}' headers = {'Authorization': "some_long_key"} response = RedirectResponse(url=url, headers=headers) return responseUna solución es hacer la solicitud en la aplicación y luego devolver la respuesta.
PERO esto es muy ineficiente y forzará que todo el tráfico pase por este servidor, mientras que una redirección tendría menos carga de red
import requests from fastapi import FastAPI, Request, Response app = FastAPI() @app.get("/data/") async def api_data(request: Request): params = str(request.query_params) url = f'http://some.other.api/{params}' headers = {'Authorization': "some_long_key"} r = requests.get(url, headers=headers) return Response(content=r.content)