'FastAPI RedirectResponse custom headers
Based off of my previous question, I need to now add a header to the response.
According to the documentation, I can simply just add the headers and another attribute to the RedirectResponse object.
When I test this, it doesn't seem to carry the header value over.
According to this post, it is impossible to set headers for a redirect request. So instead of a Redirect, maybe I should try something else?
Any 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 response
Solution 1:[1]
One solution is to do the request in the app and then return the response
BUT this is very inefficient and will force all traffic to come through this server, while a redirect would have less network load
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)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Werner |
