ホームページ > バックエンド開発 > Python チュートリアル > FastAPI アプリケーションで JSON 形式のデータを効率的に返すにはどうすればよいですか?

FastAPI アプリケーションで JSON 形式のデータを効率的に返すにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-28 22:22:11
オリジナル
722 人が閲覧しました

How Can I Efficiently Return JSON-Formatted Data in a FastAPI Application?

FastAPI を使用して JSON 形式のデータを返す

FastAPI アプリケーションを開発する場合、JSON 形式のデータを返すことのニュアンスを理解することが重要です。これには、FastAPI の内部動作を詳しく調べ、JSON シリアル化が果たす役割を理解する必要があります。

JSON シリアル化のジレンマ

問題の中心は json.dumps() の使用にあります。オブジェクトを返す前にオブジェクトをシリアル化します。このアプローチは論理的であるように思えるかもしれませんが、FastAPI が応答生成中に戻り値を自動的に JSON エンコードするため、冗長なシリアル化が導入されます。これにより、きちんとフォーマットされた辞書ではなく、JSON データの文字列表現が一見間違っているように見えます。

解決策

これを修正するには、FastAPI が JSON シリアル化プロセスを処理できるようにする必要があります。これは、データ オブジェクト (辞書、リストなど) を直接返すことで実現できます。 FastAPI は、jsonable_encoder を使用してそれらを JSON 互換データにシームレスに変換し、JSONResponse でラップします。結果の応答には、アプリケーション/json でエンコードされたデータが含まれ、目的の JSON 形式が保証されます。

実装オプション

オプション 1: 戻り値の使用

期待どおりのデータ オブジェクトを返します。 :

@app.get('/')
async def main():
    return d
ログイン後にコピー

舞台裏で、FastAPI は次を使用して dict (d) をシリアル化します。 JSONResponse を取得し、json.dumps() でエンコードします。

オプション 2: カスタム レスポンス オブジェクト

レスポンスを正確に制御する必要がある場合は、Response オブジェクトを直接利用します。

@app.get('/')
async def main():
    return Response(content=json.dumps(d, indent=4, default=str), media_type='application/json')
ログイン後にコピー

このアプローチでは、media_type (例: 'application/json') を自由に指定できます。

注: json.dumps() (str) のデフォルトの引数により、日時オブジェクトのシリアル化が可能になります。インデントを渡すことで、JSON 出力の形式を制御できます。

以上がFastAPI アプリケーションで JSON 形式のデータを効率的に返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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