フォームまたは JSON 本文を受け入れる FastAPI エンドポイントを作成するにはどうすればよいですか?
オプション 1: 依存関係関数を使用する
このメソッドには、Starlette のメソッドを使用して Content-Type リクエスト ヘッダーをチェックし、それに応じて本文を解析する依存関係関数の作成が含まれます。ただし、リクエスト ヘッダーは変更される可能性があり、データ型を常に正確に反映するとは限らないことを考慮することが重要です。さらに、期待されるデータ構造が確実に受信されるように、型チェックと検証を実装することをお勧めします。
オプション 2: オプションのパラメーターを定義する
別のアプローチは、オプションのパラメーターを定義することです。ファイル/フォームデータのパラメータを調べて、リクエスト中に渡された値があるかどうかを確認します。すべてのオプションのパラメーターが None の場合、それは JSON リクエストである可能性があります。このオプションを使用すると、より明確なエンドポイント定義が可能になりますが、JSON リクエストが実際に有効であることを検証することが重要です。
オプション 3: ミドルウェアと個別のエンドポイント
ミドルウェアを使用する受信リクエストの宛先を確認し、Content-Type に基づいて特定のエンドポイントにリダイレクトできます。このアプローチにより、クリーンなエンドポイント定義が確保され、対象を絞ったエラー処理とデータ解析が可能になります。
オプション 4: JSON とフォーム データの混合データの送信 (外部)
代替ソリューションJSON 本文とファイルまたはフォームデータの両方を一緒に送信することについては、提供されたテキストにリンクされている別の Stack Overflow の回答で説明されています。このアプローチには、よりカスタムな方法でデータを解析し、Form パラメーターを介して渡された JSON データに対して Pydantic のモデル検証を使用することが含まれます。
Python リクエストによるテスト
テストの場合、提供された Python リクエスト コードを使用して、さまざまな形式でデータをエンドポイントに送信できます。これにより、エンドポイントの動作とデータ処理機能を検証できます。
以上が柔軟な FastAPI エンドポイントを作成する方法: フォームと JSON データの両方を処理する?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。