POST リクエスト経由で JSON データを送信する際の FastAPI の 422 エラーを解決する方法
422 Unprocessable Entity エラーは通常、リクエストのペイロードが構文的に正しくない場合に発生します。正しいですが、サーバーの期待と一致しません。この特定のケースでは、リクエストがクエリ パラメーターとしてデータを受信することを想定しているエンドポイントに JSON データを送信しようとしているために、このエラーが発生しています。
この問題を解決するには、複数の方法があります。 🎜> 利用可能:
オプション 1: Pydantic を使用するモデル
from pydantic import BaseModel class User(BaseModel): user: str @app.post('/') def main(user: User): return user
オプション 2: ボディ パラメーターを使用する
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: リクエスト本文に直接アクセス
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())
JavaScript の Fetch 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); });
これらのアプローチのいずれかを選択して実装すると、JSON データを正常に処理できます。 FastAPI エンドポイントで 422 エラーを解決します。
以上がJSON データを POST する際の FastAPI の 422 エラーを修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。