ホームページ > バックエンド開発 > Python チュートリアル > JSON データを JavaScript フロントエンドから FastAPI バックエンドに正しく送信するにはどうすればよいですか?

JSON データを JavaScript フロントエンドから FastAPI バックエンドに正しく送信するにはどうすればよいですか?

DDD
リリース: 2024-12-01 03:35:17
オリジナル
252 人が閲覧しました

How to Correctly Send JSON Data from a JavaScript Frontend to a FastAPI Backend?

JavaScript フロントエンドから FastAPI バックエンドへの JSON データの投稿

問題の理解

しようとするとエラーが発生しますJSON ペイロードを JavaScript フロントエンドから FastAPI バックエンドに渡します。具体的には、グラフを生成するためにクライアント入力フォームから「ethAddress」値を渡そうとしています。

問題への対処

エラーが発生するのは、FastAPI が原因です。エンドポイントは、「ethAddress」パラメータを JSON 本文の一部としてではなくクエリ パラメータとして期待します。したがって、解決策は、JSON ペイロードを処理できるように FastAPI エンドポイントを変更することです。

解決策: JSON ペイロードの処理

オプション 1: Pydantic モデルを使用する

  • ピダンティックを作成するリクエスト本文を表すモデル:
from pydantic import BaseModel

class EthAddressModel(BaseModel):
    eth_addr: str
ログイン後にコピー
  • Pydantic モデルを想定するようにエンドポイントを変更します:
@app.post('/ethAddress')
def add_eth_addr(item: EthAddressModel):
    return item
ログイン後にコピー

オプション 2: を使用するBody パラメータ

  • を直接「ethAddress」パラメータに本文パラメータとして注釈を付けます:
from fastapi import Body

@app.post('/ethAddress')
def add_eth_addr(eth_addr: str = Body()):
    return {'eth_addr': eth_addr}
ログイン後にコピー

オプション 3: Body(embed=True) 修飾子の使用

  • Body(embed=True) 修飾子を使用して、リクエスト本文全体を単一の 1 つに解析します。パラメータ:
from fastapi import Body

@app.post('/ethAddress')
def add_eth_addr(eth_addr: str = Body(embed=True)):
    return {'eth_addr': eth_addr}
ログイン後にコピー

変更された JavaScript コード

JSON 本文を正しく送信するように JavaScript フェッチ リクエストを変更します:

fetch("http://localhost:8000/ethAddress", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ eth_addr: "your_eth_address" }),
}).then(fetchEthAddresses);
ログイン後にコピー

結論

によってこれらのソリューションのいずれかを採用すると、FastAPI バックエンドが JavaScript フロントエンドから JSON ペイロードを正しく受信して処理できるようになり、チャートの生成に「ethAddress」値を渡して使用できるようになります。

以上がJSON データを JavaScript フロントエンドから FastAPI バックエンドに正しく送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート