FastAPI RedirectResponse 自定义标头

Wer*_*ner 5 python fastapi

基于我之前的问题,我现在需要在响应中添加一个标头。

根据文档,我可以简单地将标题和另一个属性添加到RedirectResponse对象中。

当我对此进行测试时,它似乎没有携带标头值。

根据这篇文章,不可能为重定向请求设置标头。所以,而不是重定向,也许我应该尝试其他方法?

有任何想法吗?

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 response
Run Code Online (Sandbox Code Playgroud)

Wer*_*ner 0

一种解决方案是在应用程序中执行请求,然后返回响应

但这非常低效,并且将强制所有流量都通过该服务器,而重定向会减少网络负载

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)
Run Code Online (Sandbox Code Playgroud)