2.7 KiB
フォームモデル
FastAPI では、フォームフィールドを宣言するために Pydantic モデルを使用できます。
/// info | 情報
フォームを使うには、まず python-multipart をインストールします。
まず 仮想環境 を作成して有効化し、そのうえでインストールしてください。例えば:
$ pip install python-multipart
///
/// note | 備考
これは FastAPI バージョン 0.113.0 以降でサポートされています。🤓
///
フォーム用の Pydantic モデル
受け取りたいフィールドを フォームフィールド として持つ Pydantic モデル を宣言し、パラメータを Form として宣言するだけです:
{* ../../docs_src/request_form_models/tutorial001_an_py310.py hl[9:11,15] *}
FastAPI はリクエストの フォームデータ から 各フィールド のデータを 抽出 し、定義した Pydantic モデルとして渡します。
ドキュメントで確認
/docs のドキュメント UI で確認できます:
追加のフォームフィールドを禁止
一部の特殊なユースケース(おそらくあまり一般的ではありません)では、フォームフィールドを Pydantic モデルで宣言したもののみに制限し、追加のフィールドを禁止したい場合があります。
/// note | 備考
これは FastAPI バージョン 0.114.0 以降でサポートされています。🤓
///
Pydantic のモデル設定で、extra フィールドを forbid にできます:
{* ../../docs_src/request_form_models/tutorial002_an_py310.py hl[12] *}
クライアントが余分なデータを送信しようとすると、エラーのレスポンスを受け取ります。
例えば、クライアントが次のフォームフィールドを送ろうとした場合:
username:Rickpassword:Portal Gunextra:Mr. Poopybutthole
フィールド extra は許可されていない旨のエラーレスポンスが返されます:
{
"detail": [
{
"type": "extra_forbidden",
"loc": ["body", "extra"],
"msg": "Extra inputs are not permitted",
"input": "Mr. Poopybutthole"
}
]
}
まとめ
FastAPI でフォームフィールドを宣言するために Pydantic モデルを使用できます。😎