In FastAPI werden in einer Funktion deklarierte Parameter, die nicht Teil von Pfadparametern sind, automatisch als Abfrage interpretiert Parameter. Diese Interpretation unterscheidet sich von der üblichen Praxis der Übergabe von JSON-Daten in einem Anfragetext.
Um diese Diskrepanz zu beheben, gibt es mehrere Optionen:
Erstellen Sie ein Pydantic Modell zum Definieren des erwarteten JSON-Bodys:
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" }),
Verwenden Sie Body= mit einem Typ:
from fastapi import Body @app.post("/ethAddress") def add_eth_addr(eth_addr: str = Body()): return {"eth_addr": eth_addr}
JavaScript-Abruf-API:
headers: { Accept: "application/json", "Content-Type": "application/json", }, body: JSON.stringify("some addr"),
Vereinfachen Sie Nur-Body-Parameter mit „embed=True“:
@app.post("/ethAddress") def add_eth_addr(eth_addr: str = Body(embed=True)): return {"eth_addr": eth_addr}
JavaScript-Abruf-API :
headers: { Accept: "application/json", "Content-Type": "application/json", }, body: JSON.stringify({ eth_addr: "some addr" }),
Weitere Details und Beispiele mit JavaScript finden Sie unter:
Denken Sie daran, dass die Verwendung von Abfrageparametern nicht der typische Ansatz für JSON-Body-Daten in Web-APIs ist. Passen Sie Ihren Code entsprechend an, um diesen Optionen zu entsprechen.
Das obige ist der detaillierte Inhalt vonWie sende ich JSON-Daten von einem JavaScript-Frontend an ein FastAPI-Backend?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!