1. 程式人生 > 其它 >FastAPI(49)- 自定義響應之 ORJSONResponse、UJSONResponse

FastAPI(49)- 自定義響應之 ORJSONResponse、UJSONResponse

背景

  • 上一篇文章講了通過 Response 自定義響應,但有一個缺點
  • 如果直接返回一個 Response,資料不會自動轉換,也不會顯示在文件中

ORJSONResponse

作用

  • 如果需要提高效能,可以安裝並使用 orjson,並將響應設定為 ORJSONResponse
  • 官方介紹:快速、正確的 Python JSON 庫,支援 dataclass、datetime、numpy
  • 注意:僅在 FastAPI 才支援 ORJSONResponse,Starlette 並沒有它
pip install orjson

response_class

可以在路徑操作裝飾器上宣告response_class=Response

,然後最終返回的響應資料的型別就是宣告的 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
    ,並且會記錄在 OpenAPI 中

檢視 Swagger API 文件的 Response Header

請求結果

原始碼

用的是 orjson 的 dumps() 方法

UJSONResponse

和 ORJSONResponse 一樣的用法,更推薦用 orjson 代替 ujson