ホームページ > バックエンド開発 > Python チュートリアル > FastAPI で JSON データを使用した POST リクエストを効果的に処理するにはどうすればよいですか?

FastAPI で JSON データを使用した POST リクエストを効果的に処理するにはどうすればよいですか?

DDD
リリース: 2024-12-29 01:22:09
オリジナル
851 人が閲覧しました

How to Effectively Handle POST Requests with JSON Data in FastAPI?

FastAPI: JSON データを使用した POST リクエストの処理

API を構築する場合、さまざまなタイプの HTTP リクエストを処理することが不可欠です。 GET リクエストはスムーズに動作しますが、POST リクエストは、特に JSON データを送信するときにエラーが発生することがよくあります。 FastAPI の POST リクエストでよく発生する「422 Unprocessable Entity」エラーのトラブルシューティングを行うために、JSON データを期待するエンドポイントを定義するためのさまざまなアプローチを検討します。

アプローチ 1: Pydantic モデルの使用

JSON データを受け入れるリクエスト本文を定義するには、Pydantic モデルを利用できます。必要なフィールドを含むモデルを作成し、それをエンドポイント定義に組み込みます。

from pydantic import BaseModel

class User(BaseModel):
    user: str

@app.post('/')
def main(user: User):
    return user
ログイン後にコピー

アプローチ 2: Embed を使用したボディ パラメーター

Pydantic を使用したくない場合モデルでは、埋め込みオプションを使用して Body パラメータを使用できます。これにより、関数内のフィールドとしてリクエスト本文に直接アクセスできるようになります。

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: FastAPI リクエスト オブジェクトを使用する

自信がある場合受信した JSON データには、FastAPI Request オブジェクトを使用して直接アクセスできます。このアプローチでは、エンドポイントを async def で定義する必要があることに注意してください。

from fastapi import Request

@app.post('/')
async def main(request: Request): 
    return await request.json()
ログイン後にコピー

コードのテスト

エンドポイントをテストするには、Python リクエスト ライブラリまたはJavaScript Fetch API。

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()) // or, resp.text(), etc
    .then(data => {
        console.log(data); // handle response data
    })
    .catch(error => {
        console.error(error);
    });
ログイン後にコピー

特定の要件に基づいて適切なアプローチを選択し、さまざまなテスト オプションを考慮するを使用すると、FastAPI で JSON データを使用した POST リクエストを効果的に処理できます。

以上がFastAPI で JSON データを使用した POST リクエストを効果的に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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