]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🌐 Add Japanese translation for Tutorial - Form Data (#1943)
authorSwftAlpc <alpaca.swift@gmail.com>
Sat, 9 Jan 2021 18:28:15 +0000 (03:28 +0900)
committerGitHub <noreply@github.com>
Sat, 9 Jan 2021 18:28:15 +0000 (19:28 +0100)
Co-authored-by: ryusuke.miyaji <bluce826@gmail.com>
Co-authored-by: ryuckel <36391432+ryuckel@users.noreply.github.com>
Co-authored-by: tokusumi <tksmtoms@gmail.com>
Co-authored-by: T. Tokusumi <41147016+tokusumi@users.noreply.github.com>
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
docs/ja/docs/tutorial/request-forms.md [new file with mode: 0644]
docs/ja/mkdocs.yml

diff --git a/docs/ja/docs/tutorial/request-forms.md b/docs/ja/docs/tutorial/request-forms.md
new file mode 100644 (file)
index 0000000..06105c9
--- /dev/null
@@ -0,0 +1,58 @@
+# フォームデータ
+
+JSONの代わりにフィールドを受け取る場合は、`Form`を使用します。
+
+!!! info "情報"
+    フォームを使うためには、まず<a href="https://andrew-d.github.io/python-multipart/" class="external-link" target="_blank">`python-multipart`</a>をインストールします。
+
+    たとえば、`pip install python-multipart`のように。
+
+## `Form`のインポート
+
+`fastapi`から`Form`をインポートします:
+
+```Python hl_lines="1"
+{!../../../docs_src/request_forms/tutorial001.py!}
+```
+
+## `Form`のパラメータの定義
+
+`Body`や`Query`の場合と同じようにフォームパラメータを作成します:
+
+```Python hl_lines="7"
+{!../../../docs_src/request_forms/tutorial001.py!}
+```
+
+例えば、OAuth2仕様が使用できる方法の1つ(「パスワードフロー」と呼ばれる)では、フォームフィールドとして`username`と`password`を送信する必要があります。
+
+<abbr title="仕様">仕様</abbr>では、フィールドの名前が`username`と`password`であることと、JSONではなくフォームフィールドとして送信されることを要求しています。
+
+`Form`では`Body`(および`Query`や`Path`、`Cookie`)と同じメタデータとバリデーションを宣言することができます。
+
+!!! info "情報"
+    `Form`は`Body`を直接継承するクラスです。
+
+!!! tip "豆知識"
+    フォームのボディを宣言するには、明示的に`Form`を使用する必要があります。なぜなら、これを使わないと、パラメータはクエリパラメータやボディ(JSON)パラメータとして解釈されるからです。
+
+## 「フォームフィールド」について
+
+HTMLフォーム(`<form></form>`)がサーバにデータを送信する方法は、通常、そのデータに「特別な」エンコーディングを使用していますが、これはJSONとは異なります。
+
+**FastAPI** は、JSONの代わりにそのデータを適切な場所から読み込むようにします。
+
+!!! note "技術詳細"
+    フォームからのデータは通常、`application/x-www-form-urlencoded`の「media type」を使用してエンコードされます。
+
+    しかし、フォームがファイルを含む場合は、`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>のウェブドキュメントを参照してください。
+
+!!! warning "注意"
+    *path operation*で複数の`Form`パラメータを宣言することができますが、JSONとして受け取ることを期待している`Body`フィールドを宣言することはできません。なぜなら、リクエストは`application/json`の代わりに`application/x-www-form-urlencoded`を使ってボディをエンコードするからです。
+
+    これは **FastAPI**の制限ではなく、HTTPプロトコルの一部です。
+
+## まとめ
+
+フォームデータの入力パラメータを宣言するには、`Form`を使用する。
index 601efbc17437d3d9393bdc9399aad149696bdc17..f8243528d47ddcd9184229c5ba0a065628ef61b0 100644 (file)
@@ -60,6 +60,7 @@ nav:
   - tutorial/query-params-str-validations.md
   - tutorial/cookie-params.md
   - tutorial/header-params.md
+  - tutorial/request-forms.md
   - セキュリティ:
     - tutorial/security/first-steps.md
   - tutorial/cors.md