FastAPI(49)- 自定義響應之 ORJSONResponse、UJSONResponse
阿新 • • 發佈:2021-10-03
背景
- 上一篇文章講了通過 Response 自定義響應,但有一個缺點
- 如果直接返回一個 Response,資料不會自動轉換,也不會顯示在文件中
ORJSONResponse
作用
- 如果需要提高效能,可以安裝並使用 orjson,並將響應設定為 ORJSONResponse
- 官方介紹:快速、正確的 Python JSON 庫,支援 dataclass、datetime、numpy
- 注意:僅在 FastAPI 才支援 ORJSONResponse,Starlette 並沒有它
pip install orjson
response_class
可以在路徑操作裝飾器上宣告response_class=Response
實際程式碼
from fastapi import FastAPI from fastapi.responses import ORJSONResponse app = FastAPI() # 宣告返回的 Response 型別 @app.get("/item", response_class=ORJSONResponse) async def get_item(): return [{"item_id": "Foo"}]
- response_class 將用於定義響應的 media_type
- 上面的栗子中,Response Header 的 Content-type 將為 application/json
檢視 Swagger API 文件的 Response Header
請求結果
原始碼
用的是 orjson 的 dumps() 方法
UJSONResponse
和 ORJSONResponse 一樣的用法,更推薦用 orjson 代替 ujson