为什么在 fastAPI 中使用 ORJSONResponse() 时 Http headers 消失了?
Why Http headers is being vanished when using ORJSONResponse() in fastAPI?
Httpheaders可以在fastAPI修改;但是,当我尝试使用更快的序列化程序(在本例中为 ORJSONResponse
)以获得更快的响应时,所有添加或修改的 header 都令人困惑地消失了。 我不知道为什么会这样,我该如何解决?
UJSONResponse
我们也得到了相同的结果。
感谢分享您的经验。
一个。此代码无法修改 headers
from fastapi import APIRouter, Response
from fastapi.responses import ORJSONResponse
router = APIRouter()
@router.get("/test")
async def plan_list(response:Response):
response.headers["test-header"]="test-value"
return ORJSONResponse(list(range(10000)))
输出header代码列表A:
date: Thu, 22 Oct 2020 18:42:19 GMT
server: uvicorn
content-length: 48891
content-type: application/json
乙。此代码正常修改 headers
from fastapi import APIRouter, Response
from fastapi.responses import ORJSONResponse
router = APIRouter()
@router.get("/test")
async def plan_list(response:Response):
response.headers["test-header"]="test-value"
return list(range(10000))
输出header代码列表B:
date: Thu, 22 Oct 2020 18:42:19 GMT
server: uvicorn
content-length: 48891
content-type: application/json
test-header: test-value
测试平台:
- OS: macOS 10.15.7
- 客户:失眠 2020.14.1
- python: 3.8.5
我认为你应该像这样使用 Response
return Response(list(range(10000)))
已解决here thanks to amin jamal。
from fastapi import APIRouter, Response, FastAPI
from fastapi.responses import ORJSONResponse
app = FastAPI()
router = APIRouter()
@router.get("/test")
async def plan_list(response:Response):
response.headers["test"]="test-value"
return ORJSONResponse(list(range(10000)),headers=response.headers)
app.include_router(router)
Httpheaders可以在fastAPI修改;但是,当我尝试使用更快的序列化程序(在本例中为 ORJSONResponse
)以获得更快的响应时,所有添加或修改的 header 都令人困惑地消失了。 我不知道为什么会这样,我该如何解决?
UJSONResponse
我们也得到了相同的结果。
感谢分享您的经验。
一个。此代码无法修改 headers
from fastapi import APIRouter, Response
from fastapi.responses import ORJSONResponse
router = APIRouter()
@router.get("/test")
async def plan_list(response:Response):
response.headers["test-header"]="test-value"
return ORJSONResponse(list(range(10000)))
输出header代码列表A:
date: Thu, 22 Oct 2020 18:42:19 GMT
server: uvicorn
content-length: 48891
content-type: application/json
乙。此代码正常修改 headers
from fastapi import APIRouter, Response
from fastapi.responses import ORJSONResponse
router = APIRouter()
@router.get("/test")
async def plan_list(response:Response):
response.headers["test-header"]="test-value"
return list(range(10000))
输出header代码列表B:
date: Thu, 22 Oct 2020 18:42:19 GMT
server: uvicorn
content-length: 48891
content-type: application/json
test-header: test-value
测试平台:
- OS: macOS 10.15.7
- 客户:失眠 2020.14.1
- python: 3.8.5
我认为你应该像这样使用 Response
return Response(list(range(10000)))
已解决here thanks to amin jamal。
from fastapi import APIRouter, Response, FastAPI
from fastapi.responses import ORJSONResponse
app = FastAPI()
router = APIRouter()
@router.get("/test")
async def plan_list(response:Response):
response.headers["test"]="test-value"
return ORJSONResponse(list(range(10000)),headers=response.headers)
app.include_router(router)