在FastAPI 中,在函數中宣告但不屬於路徑參數的參數會自動解釋為查詢參數。這種解釋與在請求正文中傳遞 JSON 資料的常見做法不同。
要解決此差異,有多種選項:
建立Pydantic模型定義預期的JSON 正文:
from pydantic import BaseModel class Item(BaseModel): eth_addr: str @app.post("/ethAddress") def add_eth_addr(item: Item): return item
JavaScript Fetch API:
headers: { Accept: "application/json", "Content-Type": "application/json", }, body: JSON.stringify({ eth_addr: "some addr" }),
使用Body= 和型別:
from fastapi import Body @app.post("/ethAddress") def add_eth_addr(eth_addr: str = Body()): return {"eth_addr": eth_addr}
JavaScript Fetch API:
headers: { Accept: "application/json", "Content-Type": "application/json", }, body: JSON.stringify("some addr"),
@app.post("/ethAddress") def add_eth_addr(eth_addr: str = Body(embed=True)): return {"eth_addr": eth_addr}使用正文嵌入參數使用embed=True 簡化僅正文參數:
headers: { Accept: "application/json", "Content-Type": "application/json", }, body: JSON.stringify({ eth_addr: "some addr" }),JavaScript Fetch API :
以上是如何將 JSON 資料從 JavaScript 前端傳送到 FastAPI 後端?的詳細內容。更多資訊請關注PHP中文網其他相關文章!