Einführung
Beim Versuch, JSON-Daten von einem JavaScript-Frontend an zu übertragen Wenn Sie ein FastAPI-Backend mit einer POST-Anfrage verwenden, werden möglicherweise Fehlermeldungen wie „422 Unprocessable Entity“ angezeigt. In diesem Artikel wird untersucht, warum dies auftritt, und Lösungen zur Behebung des Problems bereitgestellt.
Fehleranalyse
Der Fehler weist darauf hin, dass Ihr Backend-FastAPI-Endpunkt einen Abfrageparameter erwartet, keinen JSON-Körper. Standardmäßig werden Nicht-Pfad-Parameter in FastAPI-Endpunkten als Abfrageparameter interpretiert.
Lösung
Es gibt mehrere Methoden, um dieses Problem zu beheben und die Veröffentlichung von JSON-Daten zu ermöglichen :
Erstellen Sie ein Pydantic-Modell zur Darstellung der JSON-Daten, zum Beispiel:
from pydantic import BaseModel class Item(BaseModel): eth_addr: str
In Ihrem Endpunkt-Handler:
@app.post('/ethAddress') def add_eth_addr(item: Item): return item
Dafür muss der JSON-Body das folgende Format haben:
{ "eth_addr": "some addr" }
In Ihrer JavaScript-Abrufanforderung:
//... headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ "eth_addr": "some addr" }), //...
from fastapi import Body @app.post('/ethAddress') def add_eth_addr(eth_addr: str = Body()): return {'eth_addr': eth_addr}
Dies ermöglicht das direkte Posten der JSON-Daten als Zeichenfolge:
"some addr"
In JavaScript:
//... headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify("some addr"), //...
from fastapi import Body @app.post('/ethAddress') def add_eth_addr(eth_addr: str = Body(embed=True)): return {'eth_addr': eth_addr}
Dies erfordert den JSON-Körper im gleichen Format wie Option 2:
{ "eth_addr": "some addr" }
In JavaScript:
//... headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ "eth_addr": "some addr" }), //...
Fazit
Wenn Sie diese Lösungen befolgen, können Sie JSON-Daten erfolgreich von Ihrem JavaScript-Frontend an Ihren FastAPI-Endpunkt senden. Denken Sie daran, den Ansatz zu wählen, der Ihren spezifischen Anforderungen am besten entspricht.
Das obige ist der detaillierte Inhalt vonWie behebt man „422 Unprocessable Entity'-Fehler beim Senden von JSON-Daten von JavaScript an FastAPI?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!