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 フェッチ API:
headers: { Accept: "application/json", "Content-Type": "application/json", }, body: JSON.stringify("some addr"),
embed=True を使用してボディのみのパラメータを簡素化:
@app.post("/ethAddress") def add_eth_addr(eth_addr: str = Body(embed=True)): return {"eth_addr": eth_addr}
JavaScript フェッチ API :
headers: { Accept: "application/json", "Content-Type": "application/json", }, body: JSON.stringify({ eth_addr: "some addr" }),
JavaScript の詳細と例については、次を参照してください:
クエリ パラメーターの使用は、Web API での JSON 本体データの一般的なアプローチではないことに注意してください。これらのオプションに合わせてコードを調整してください。
以上がJSON データを JavaScript フロントエンドから FastAPI バックエンドに送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。