Spaces:
Running
Running
from fastapi import FastAPI, Request, Response | |
import httpx | |
import os | |
app = FastAPI() | |
BACKEND_URL = os.environ.get("BACKEND_URL") | |
AUTH_HEADER = os.environ.get("AUTH_HEADER") | |
async def proxy(full_path: str, request: Request): | |
# Monta URL destino | |
url = f"{BACKEND_URL}/{full_path}" | |
# Copia headers originais e adiciona Authorization | |
headers = dict(request.headers) | |
headers["Authorization"] = AUTH_HEADER | |
# Lê corpo da requisição | |
body = await request.body() | |
# Faz requisição ao backend | |
async with httpx.AsyncClient() as client: | |
resp = await client.request( | |
method=request.method, | |
url=url, | |
headers=headers, | |
content=body, | |
params=dict(request.query_params) | |
) | |
# Retorna resposta do backend | |
return Response( | |
content=resp.content, | |
status_code=resp.status_code, | |
headers=dict(resp.headers) | |
) | |
# Para rodar: | |
# uvicorn proxy:app --reload --port 8000 |