首頁 >後端開發 >Python教學 >如何將 JSON 資料從 JavaScript 前端傳送到 FastAPI 後端?

如何將 JSON 資料從 JavaScript 前端傳送到 FastAPI 後端?

DDD
DDD原創
2024-11-10 14:05:03429瀏覽

How to Send JSON Data from a JavaScript Front-End to a FastAPI Back-End?

將JSON 資料從JavaScript 前端傳送到FastAPI 後端

在FastAPI 中,在函數中宣告但不屬於路徑參數的參數會自動解釋為查詢參數。這種解釋與在請求正文中傳遞 JSON 資料的常見做法不同。

要解決此差異,有多種選項:

使用Pydantic 模型

建立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 參數

使用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"),

JavaScript Fetch API:

@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 :
  • 有關JavaScript 的更多詳細資訊和範例,請參閱:
  • https://fastapi.tiangolo.com/advanced/requestBody/
https://fastapi.tiangolo.com/tutorial/body-forms/# formencoded-or-raw-body-few-parameters

https://stackoverflow.com/questions/55333220/fastapi-validation- for-payload-when-using-body請記住,使用查詢參數並不是Web API 中JSON 正文資料的典型方法。相應地調整您的代碼以匹配這些選項。

以上是如何將 JSON 資料從 JavaScript 前端傳送到 FastAPI 後端?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn