Sync fastapi docs from 11614be9 on 2026-03-11

This commit is contained in:
The Librarian
2026-03-11 04:00:06 +00:00
parent 95d1a394e6
commit 18a95756ed
1722 changed files with 91405 additions and 23556 deletions
+16 -12
View File
@@ -1,4 +1,4 @@
# フォームデータ
# フォームデータ { #form-data }
JSONの代わりにフィールドを受け取る場合は、`Form`を使用します。
@@ -6,27 +6,31 @@ JSONの代わりにフィールドを受け取る場合は、`Form`を使用し
フォームを使うためには、まず<a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>をインストールします。
たとえば、`pip install python-multipart`のように。
必ず[仮想環境](../virtual-environments.md){.internal-link target=_blank}を作成して有効化してから、例えば次のようにインストールしてください:
```console
$ pip install python-multipart
```
///
## `Form`のインポート
## `Form`のインポート { #import-form }
`fastapi`から`Form`をインポートします:
{* ../../docs_src/request_forms/tutorial001.py hl[1] *}
{* ../../docs_src/request_forms/tutorial001_an_py310.py hl[3] *}
## `Form`のパラメータの定義
## `Form`のパラメータの定義 { #define-form-parameters }
`Body``Query`の場合と同じようにフォームパラメータを作成します:
{* ../../docs_src/request_forms/tutorial001.py hl[7] *}
{* ../../docs_src/request_forms/tutorial001_an_py310.py hl[9] *}
例えば、OAuth2仕様が使用できる方法の1つ(「パスワードフロー」と呼ばれる)では、フォームフィールドとして`username``password`を送信する必要があります。
<abbr title="仕様">仕様</abbr>では、フィールドの名前が`username``password`であることと、JSONではなくフォームフィールドとして送信されることを要求しています。
<dfn title="仕様">仕様</dfn>では、フィールドの名前が正確に`username``password`であることと、JSONではなくフォームフィールドとして送信されることを要求しています。
`Form`では`Body`(および`Query``Path``Cookie`)と同じメタデータとバリデーションを宣言することができます。
`Form`では`Body`(および`Query``Path``Cookie`)と同じ設定を宣言することができます。これには、バリデーション、例、エイリアス(例えば`username`の代わりに`user-name`)などが含まれます。
/// info | 情報
@@ -40,7 +44,7 @@ JSONの代わりにフィールドを受け取る場合は、`Form`を使用し
///
## 「フォームフィールド」について
## 「フォームフィールド」について { #about-form-fields }
HTMLフォーム(`<form></form>`)がサーバにデータを送信する方法は、通常、そのデータに「特別な」エンコーディングを使用していますが、これはJSONとは異なります。
@@ -52,18 +56,18 @@ HTMLフォーム(`<form></form>`)がサーバにデータを送信する方
しかし、フォームがファイルを含む場合は、`multipart/form-data`としてエンコードされます。ファイルの扱いについては次の章で説明します。
これらのエンコーディングやフォームフィールドの詳細については、<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST" class="external-link" target="_blank"><abbr title="Mozilla Developer Network">MDN</abbr>の<code>POST</code></a>のウェブドキュメントを参照してください。
これらのエンコーディングやフォームフィールドの詳細については、<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST" class="external-link" target="_blank"><abbr title="Mozilla Developer Network - Mozilla 開発者ネットワーク">MDN</abbr>の<code>POST</code></a>のウェブドキュメントを参照してください。
///
/// warning | 注意
*path operation*で複数の`Form`パラメータを宣言することができますが、JSONとして受け取ることを期待している`Body`フィールドを宣言することはできません。なぜなら、リクエストは`application/json`の代わりに`application/x-www-form-urlencoded`を使ってボディをエンコードするからです。
*path operation*で複数の`Form`パラメータを宣言することができますが、JSONとして受け取ることを期待している`Body`フィールドを宣言することはできません。なぜなら、リクエストは`application/x-www-form-urlencoded`の代わりに`application/json`を使ってボディをエンコードするからです。
これは **FastAPI**の制限ではなく、HTTPプロトコルの一部です。
///
## まとめ
## まとめ { #recap }
フォームデータの入力パラメータを宣言するには、`Form`を使用する。