Request Body
last update: 2025-06-07
除了使用 Pydantic 模型定義資料結構,FastAPI 也允許以更動態的方式接收 JSON,搭配 Body(None) 可處理選填資料,並手動解析成 Python dict。
使用 Body(None) 接收原始 JSON
Body(None) 接收原始 JSONfrom fastapi import FastAPI, Body
import json
app = FastAPI()
@app.post("/raw-json")
def handle_raw_json(payload=Body(None)):
if payload is None:
return {"error": "no body received"}
# payload 已是 dict,可直接使用
return {
"type": str(type(payload)),
"keys": list(payload.keys())
}前端呼叫範例
當 JSON 為文字格式時手動轉換
若你刻意從前端傳送字串型 JSON(不建議),可使用 json.loads() 將其轉換為 Python dict:
前端傳送範例:
小結
方法
用法與特性
Body(None)
接收原始 JSON,可為 None,適合彈性 API 接收資料
字串手動解析 JSON
搭配 json.loads() 將 JSON 字串轉為 dict
這種寫法在開發快速原型、處理動態或半結構化資料時很有彈性,但若資料結構明確仍建議優先使用 Pydantic 進行資料驗證與型別控制。
Last updated