FastAPI POST リクエスト エラー 422: JSON データを適切に処理するにはどうすればよいですか?
FastAPI: POST リクエスト経由で JSON データを送信する際のエラー 422 の理解と解決
問題の説明
を構築するFastAPI を使用した API では、POST リクエストを通じて JSON データを送信するときに、アプリケーションでエラー コード 422 (処理できないエンティティ) が表示されます。一方、GET リクエストはスムーズに動作します。この問題は、JSON の解析、UTF-8 エンコードの使用、または HTTP ヘッダーの変更を試みても解決しません。
gt;詳細な説明
422 ステータス コードを含む応答は、次のことを示しています。送信されたデータのエラー。多くの場合、要素の欠落または誤ったフォーマットが原因です。この場合、問題は POST リクエストの予期される形式に起因しています。デフォルトでは、FastAPI はユーザー入力を JSON ペイロードとしてではなくクエリ パラメーターとして想定します。その結果、クライアントが JSON データを送信しようとすると 422 エラーが発生します。
ソリューション オプション
次の 4 つのオプションは、エンドポイントを正しく定義するための個別のアプローチを提供します。 POST リクエストからの JSON データを処理します:
1。 Pydantic モデルの使用
Pydantic モデルを使用すると、エンドポイントに想定されるデータ構造を指定できます。
from pydantic import BaseModel class User(BaseModel): user: str @app.post('/') def main(user: User): return user
2. Body パラメータの使用 Embed
このメソッドは、特別な「embed」パラメータを利用して、ボディを単一のパラメータとして扱います。
from fastapi import Body @app.post('/') def main(user: str = Body(..., embed=True)): return {'user': user}
3.辞書型の使用 (あまり推奨されません)
あまり推奨されませんが、このアプローチはキーと値のペアを辞書型として定義します。
from typing import Dict, Any @app.post('/') def main(payload: Dict[Any, Any]): return payload
4 。 Request オブジェクトを直接使用する
このオプションには、Request オブジェクトを使用して受信した JSON データを解析することが含まれます。
from fastapi import Request @app.post('/') async def main(request: Request): return await request.json()
ソリューションのテスト
提供されたソリューションをテストするには、指定された手順に従ってください手順:
Python リクエスト ライブラリの使用import requests
url = 'http://127.0.0.1:8000/'
payload ={'user': 'foo'}
resp = requests.post(url=url, json=payload)
print(resp.json())
ログイン後にコピー
import requests url = 'http://127.0.0.1:8000/' payload ={'user': 'foo'} resp = requests.post(url=url, json=payload) print(resp.json())
JavaScript フェッチ API の使用fetch('/', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({'user': 'foo'})
})
.then(resp => resp.json())
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
ログイン後にコピー
fetch('/', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({'user': 'foo'}) }) .then(resp => resp.json()) .then(data => { console.log(data); }) .catch(error => { console.error(error); });
以上がFastAPI POST リクエスト エラー 422: JSON データを適切に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

Investing.comの反クラウリング戦略を理解する多くの人々は、Investing.com(https://cn.investing.com/news/latest-news)からのニュースデータをクロールしようとします。
