pythonasyncioapiasyncfastapiframeworkjsonjson-schemaopenapiopenapi3pydanticpython-typespython3redocreststarletteswaggerswagger-uiuvicornweb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.7 KiB
1.7 KiB
リクエストフォームとファイル
File
とForm
を同時に使うことでファイルとフォームフィールドを定義することができます。
/// info | 情報
アップロードされたファイルやフォームデータを受信するには、まずpython-multipart
をインストールします。
例えば、pip install python-multipart
のように。
///
File
とForm
のインポート
{* ../../docs_src/request_forms_and_files/tutorial001.py hl[1] *}
File
とForm
のパラメータの定義
ファイルやフォームのパラメータはBody
やQuery
の場合と同じように作成します:
{* ../../docs_src/request_forms_and_files/tutorial001.py hl[8] *}
ファイルとフォームフィールドがフォームデータとしてアップロードされ、ファイルとフォームフィールドを受け取ります。
また、いくつかのファイルをbytes
として、いくつかのファイルをUploadFile
として宣言することができます。
/// warning | 注意
path operationで複数のFile
とForm
パラメータを宣言することができますが、JSONとして受け取ることを期待しているBody
フィールドを宣言することはできません。なぜなら、リクエストのボディはapplication/json
の代わりにmultipart/form-data
を使ってエンコードされているからです。
これは FastAPI の制限ではなく、HTTPプロトコルの一部です。
///
まとめ
同じリクエストでデータやファイルを受け取る必要がある場合は、File
とForm
を一緒に使用します。