ホームページ > バックエンド開発 > Python チュートリアル > JSON データを JavaScript から FastAPI に送信するときに発生する「422 Unprocessable Entity」エラーを修正する方法

JSON データを JavaScript から FastAPI に送信するときに発生する「422 Unprocessable Entity」エラーを修正する方法

DDD
リリース: 2024-11-13 01:06:02
オリジナル
568 人が閲覧しました

How to Fix

JavaScript から FastAPI への JSON Post リクエストのトラブルシューティング

概要

JavaScript フロントエンドから FastAPI に JSON データを転送しようとする場合POST リクエストを使用する FastAPI バックエンドでは、「422 Unprocessable Entity」のようなエラー メッセージが表示される場合があります。この記事では、この問題が発生する理由を検討し、問題を解決するための解決策を示します。

エラー分析

このエラーは、バックエンド FastAPI エンドポイントがクエリ パラメータではなくクエリ パラメータを予期していることを示しています。 JSON本体。デフォルトでは、FastAPI エンドポイントの非パス パラメーターはクエリ パラメーターとして解釈されます。

解決策

この問題に対処し、JSON データの投稿を有効にする方法は複数あります。 :

オプション 1: Pydantic モデルを定義する

JSON データを表す Pydantic モデルを作成します。例:

from pydantic import BaseModel

class Item(BaseModel):
    eth_addr: str
ログイン後にコピー

エンドポイント ハンドラー内:

@app.post('/ethAddress')
def add_eth_addr(item: Item):
    return item
ログイン後にコピー

これには、JSON 本文が次の形式である必要があります:

{
    "eth_addr": "some addr"
}
ログイン後にコピー
ログイン後にコピー

JavaScript フェッチ リクエスト内:

//...
headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json'
},
body: JSON.stringify({
    "eth_addr": "some addr"
}),
//...
ログイン後にコピー
ログイン後にコピー

オプション 2: FastAPI Body() を使用します。 Type

from fastapi import Body

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

これにより、JSON データを文字列として直接投稿できます:

"some addr"
ログイン後にコピー

JavaScript の場合:

//...
headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json'
},
body: JSON.stringify("some addr"),
//...
ログイン後にコピー

オプション 3: FastAPI の埋め込み機能を使用します。 (単一ボディパラメータに推奨)

from fastapi import Body

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

これは、オプション 2 と同じ形式の JSON ボディを想定しています:

{
    "eth_addr": "some addr"
}
ログイン後にコピー
ログイン後にコピー

JavaScript の場合:

//...
headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json'
},
body: JSON.stringify({
    "eth_addr": "some addr"
}),
//...
ログイン後にコピー
ログイン後にコピー

結論

これらの解決策に従うことで、JavaScript フロントエンドから FastAPI エンドポイントに JSON データを正常に投稿できます。特定の要件に最も適したアプローチを選択することを忘れないでください。

以上がJSON データを JavaScript から FastAPI に送信するときに発生する「422 Unprocessable Entity」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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