From 259c55f7cd96150c56096dcb0943323a7de5eea0 Mon Sep 17 00:00:00 2001 From: atsumi Date: Fri, 4 Dec 2020 02:00:54 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=8C=90=20Add=20Japanese=20translation=20f?= =?UTF-8?q?or=20Advanced=20User=20Guide=20-=20Additional=20Status=20Codes?= =?UTF-8?q?=20(#2145)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Taki Komiyama <39375566+komtaki@users.noreply.github.com> Co-authored-by: T. Tokusumi <41147016+tokusumi@users.noreply.github.com> --- .../docs/advanced/additional-status-codes.md | 37 +++++++++++++++++++ docs/ja/mkdocs.yml | 3 +- 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 docs/ja/docs/advanced/additional-status-codes.md diff --git a/docs/ja/docs/advanced/additional-status-codes.md b/docs/ja/docs/advanced/additional-status-codes.md new file mode 100644 index 000000000..6c03cd92b --- /dev/null +++ b/docs/ja/docs/advanced/additional-status-codes.md @@ -0,0 +1,37 @@ +# 追加のステータスコード + +デフォルトでは、 **FastAPI** は `JSONResponse` を使ってレスポンスを返します。その `JSONResponse` の中には、 *path operation* が返した内容が入ります。 + +それは、デフォルトのステータスコードか、 *path operation* でセットしたものを利用します。 + +## 追加のステータスコード + +メインのステータスコードとは別に、他のステータスコードを返したい場合は、`Response` (`JSONResponse` など) に追加のステータスコードを設定して直接返します。 + +例えば、itemを更新し、成功した場合は200 "OK"のHTTPステータスコードを返す *path operation* を作りたいとします。 + +しかし、新しいitemも許可したいです。itemが存在しない場合は、それらを作成して201 "Created"を返します。 + +これを達成するには、 `JSONResponse` をインポートし、 `status_code` を設定して直接内容を返します。 + +```Python hl_lines="4 23" +{!../../../docs_src/additional_status_codes/tutorial001.py!} +``` + +!!! warning "注意" + 上記の例のように `Response` を明示的に返す場合、それは直接返されます。 + + モデルなどはシリアライズされません。 + + 必要なデータが含まれていることや、値が有効なJSONであること (`JSONResponse` を使う場合) を確認してください。 + +!!! note "技術詳細" + `from starlette.responses import JSONResponse` を利用することもできます。 + + **FastAPI** は `fastapi.responses` と同じ `starlette.responses` を、開発者の利便性のために提供しています。しかし有効なレスポンスはほとんどStarletteから来ています。 `status` についても同じです。 + +## OpenAPIとAPIドキュメント + +ステータスコードとレスポンスを直接返す場合、それらはOpenAPIスキーマ (APIドキュメント) には含まれません。なぜなら、FastAPIは何が返されるのか事前に知ることができないからです。 + +しかし、 [Additional Responses](additional-responses.md){.internal-link target=_blank} を使ってコードの中にドキュメントを書くことができます。 diff --git a/docs/ja/mkdocs.yml b/docs/ja/mkdocs.yml index 81fe64b9c..7cb2d4293 100644 --- a/docs/ja/mkdocs.yml +++ b/docs/ja/mkdocs.yml @@ -57,10 +57,11 @@ nav: - tutorial/body.md - tutorial/query-params-str-validations.md - tutorial/header-params.md - - tutorial/cors.md - セキュリティ: - tutorial/security/first-steps.md + - tutorial/cors.md - 高度なユーザーガイド: + - advanced/additional-status-codes.md - advanced/response-directly.md - advanced/custom-response.md - project-generation.md