```console
diff --git a/docs/ja/docs/project-generation.md b/docs/ja/docs/project-generation.md
index c930fb557c..b6550e3ac3 100644
--- a/docs/ja/docs/project-generation.md
+++ b/docs/ja/docs/project-generation.md
@@ -4,7 +4,7 @@
このテンプレートを使って開始できます。初期セットアップ、セキュリティ、データベース、いくつかのAPIエンドポイントがすでに用意されています。
-GitHubリポジトリ:
Full Stack FastAPI Template
+GitHubリポジトリ: [Full Stack FastAPI Template](https://github.com/tiangolo/full-stack-fastapi-template)
## Full Stack FastAPI テンプレート - 技術スタックと機能 { #full-stack-fastapi-template-technology-stack-and-features }
diff --git a/docs/ja/docs/python-types.md b/docs/ja/docs/python-types.md
index a6b46c256d..7802336487 100644
--- a/docs/ja/docs/python-types.md
+++ b/docs/ja/docs/python-types.md
@@ -231,7 +231,7 @@ def some_function(data: Any):
{!> ../../docs_src/python_types/tutorial008b_py310.py!}
```
-これは `item` が `int` または `str` になり得ることを意味します.
+これは `item` が `int` または `str` になり得ることを意味します。
#### `None` の可能性 { #possibly-none }
@@ -269,7 +269,7 @@ def some_function(data: Any):
## Pydantic のモデル { #pydantic-models }
-
Pydantic はデータ検証を行うための Python ライブラリです。
+[Pydantic](https://docs.pydantic.dev/) はデータ検証を行うための Python ライブラリです。
データの「形」を属性付きのクラスとして宣言します。
@@ -285,7 +285,7 @@ Pydantic の公式ドキュメントからの例:
/// info | 情報
-
Pydantic の詳細はドキュメントを参照してください。
+[ Pydantic の詳細はドキュメントを参照してください](https://docs.pydantic.dev/)。
///
@@ -343,6 +343,6 @@ Python 自体は、この `Annotated` で何かをするわけではありませ
/// info | 情報
-すでにすべてのチュートリアルを終えて、型についての詳細を見るためにこのページに戻ってきた場合は、良いリソースとして
`mypy` の「チートシート」 があります。
+すでにすべてのチュートリアルを終えて、型についての詳細を見るためにこのページに戻ってきた場合は、良いリソースとして [`mypy` の「チートシート`](https://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html) があります。
///
diff --git a/docs/ja/docs/tutorial/background-tasks.md b/docs/ja/docs/tutorial/background-tasks.md
index d32c141b5b..0bacbb3947 100644
--- a/docs/ja/docs/tutorial/background-tasks.md
+++ b/docs/ja/docs/tutorial/background-tasks.md
@@ -63,7 +63,7 @@
## 技術的な詳細 { #technical-details }
-`BackgroundTasks` クラスは、
`starlette.background`から直接取得されます。
+`BackgroundTasks` クラスは、[`starlette.background`](https://www.starlette.dev/background/) から直接取得されます。
これは、FastAPI に直接インポート/インクルードされるため、`fastapi` からインポートできる上に、`starlette.background`から別の `BackgroundTask` (末尾に `s` がない) を誤ってインポートすることを回避できます。
@@ -71,11 +71,11 @@
それでも、FastAPI で `BackgroundTask` を単独で使用することは可能ですが、コード内でオブジェクトを作成し、それを含むStarlette `Response` を返す必要があります。
-詳細については、
Starlette のバックグラウンドタスクに関する公式ドキュメントを参照して下さい。
+詳細については、[Starlette のバックグラウンドタスクに関する公式ドキュメント](https://www.starlette.dev/background/)を参照して下さい。
## 注意 { #caveat }
-大量のバックグラウンド計算が必要であり、必ずしも同じプロセスで実行する必要がない場合 (たとえば、メモリや変数などを共有する必要がない場合)、
Celery のようなより大きな他のツールを使用するとメリットがあるかもしれません。
+大量のバックグラウンド計算が必要であり、必ずしも同じプロセスで実行する必要がない場合 (たとえば、メモリや変数などを共有する必要がない場合)、[Celery](https://docs.celeryq.dev) のようなより大きな他のツールを使用するとメリットがあるかもしれません。
これらは、より複雑な構成、RabbitMQ や Redis などのメッセージ/ジョブキューマネージャーを必要とする傾向がありますが、複数のプロセス、特に複数のサーバーでバックグラウンドタスクを実行できます。
diff --git a/docs/ja/docs/tutorial/bigger-applications.md b/docs/ja/docs/tutorial/bigger-applications.md
index 9c1cc0fe69..49ee92cf71 100644
--- a/docs/ja/docs/tutorial/bigger-applications.md
+++ b/docs/ja/docs/tutorial/bigger-applications.md
@@ -58,17 +58,17 @@ from app.routers import items
```bash
.
-├── app # "app" is a Python package
-│ ├── __init__.py # this file makes "app" a "Python package"
-│ ├── main.py # "main" module, e.g. import app.main
-│ ├── dependencies.py # "dependencies" module, e.g. import app.dependencies
-│ └── routers # "routers" is a "Python subpackage"
-│ │ ├── __init__.py # makes "routers" a "Python subpackage"
-│ │ ├── items.py # "items" submodule, e.g. import app.routers.items
-│ │ └── users.py # "users" submodule, e.g. import app.routers.users
-│ └── internal # "internal" is a "Python subpackage"
-│ ├── __init__.py # makes "internal" a "Python subpackage"
-│ └── admin.py # "admin" submodule, e.g. import app.internal.admin
+├── app # "app" は Python パッケージ
+│ ├── __init__.py # このファイルにより "app" は「Python パッケージ」になる
+│ ├── main.py # "main" モジュール(例: import app.main)
+│ ├── dependencies.py # "dependencies" モジュール(例: import app.dependencies)
+│ └── routers # "routers" は「Python サブパッケージ」
+│ │ ├── __init__.py # このファイルにより "routers" は「Python サブパッケージ」になる
+│ │ ├── items.py # "items" サブモジュール(例: import app.routers.items)
+│ │ └── users.py # "users" サブモジュール(例: import app.routers.users)
+│ └── internal # "internal" は「Python サブパッケージ」
+│ ├── __init__.py # このファイルにより "internal" は「Python サブパッケージ」になる
+│ └── admin.py # "admin" サブモジュール(例: import app.internal.admin)
```
## `APIRouter` { #apirouter }
@@ -123,7 +123,7 @@ from app.routers import items
この例を簡単にするために架空のヘッダーを使っています。
-しかし実際には、組み込みの [Security utilities](security/index.md){.internal-link target=_blank} を使う方が良い結果になります。
+しかし実際には、組み込みの [Security utilities](security/index.md) を使う方が良い結果になります。
///
@@ -169,7 +169,7 @@ async def read_item(item_id: str):
/// tip | 豆知識
-[*path operation デコレータ*の依存関係](dependencies/dependencies-in-path-operation-decorators.md){.internal-link target=_blank} と同様に、*path operation 関数*には値は渡されない点に注意してください。
+[*path operation デコレータ*の依存関係](dependencies/dependencies-in-path-operation-decorators.md) と同様に、*path operation 関数*には値は渡されない点に注意してください。
///
@@ -185,8 +185,8 @@ async def read_item(item_id: str):
* すべてに事前定義した `responses` が含まれます。
* これらすべての *path operations* では、実行前に `dependencies` のリストが評価・実行されます。
* 特定の *path operation* に依存関係を宣言した場合は、**それらも実行されます**。
- * ルーターの依存関係が先に実行され、その後に[デコレータ内の `dependencies`](dependencies/dependencies-in-path-operation-decorators.md){.internal-link target=_blank}、次に通常のパラメータ依存関係が続きます。
- * [`scopes` を伴う `Security` 依存関係](../advanced/security/oauth2-scopes.md){.internal-link target=_blank} を追加することもできます。
+ * ルーターの依存関係が先に実行され、その後に[デコレータ内の `dependencies`](dependencies/dependencies-in-path-operation-decorators.md)、次に通常のパラメータ依存関係が続きます。
+ * [`scopes` を伴う `Security` 依存関係](../advanced/security/oauth2-scopes.md) を追加することもできます。
/// tip | 豆知識
@@ -303,7 +303,7 @@ from ...dependencies import get_token_header
通常どおり `FastAPI` クラスをインポートして作成します。
-さらに、各 `APIRouter` の依存関係と組み合わされる[グローバル依存関係](dependencies/global-dependencies.md){.internal-link target=_blank}も宣言できます:
+さらに、各 `APIRouter` の依存関係と組み合わされる[グローバル依存関係](dependencies/global-dependencies.md)も宣言できます:
{* ../../docs_src/bigger_applications/app_an_py310/main.py hl[1,3,7] title["app/main.py"] *}
@@ -353,7 +353,7 @@ from .routers import items, users
from app.routers import items, users
```
-Python のパッケージとモジュールについて詳しくは、
公式の Python モジュールに関するドキュメントをご覧ください。
+Python のパッケージとモジュールについて詳しくは、[公式の Python モジュールに関するドキュメント](https://docs.python.org/3/tutorial/modules.html)をご覧ください。
///
@@ -465,6 +465,37 @@ from .routers.users import router
///
+## `pyproject.toml` の `entrypoint` を設定 { #configure-the-entrypoint-in-pyproject.toml }
+
+FastAPI の `app` オブジェクトは `app/main.py` にあるので、`pyproject.toml` で `entrypoint` を次のように設定できます:
+
+```toml
+[tool.fastapi]
+entrypoint = "app.main:app"
+```
+
+これは次のようにインポートするのと同等です:
+
+```python
+from app.main import app
+```
+
+このようにすると、`fastapi` コマンドがアプリの場所を把握できます。
+
+/// Note | 備考
+
+コマンドにパスを渡すこともできます。例えば:
+
+```console
+$ fastapi dev app/main.py
+```
+
+しかし、そのたびに `fastapi` コマンドを呼ぶ際、正しいパスを渡すのを忘れないようにする必要があります。
+
+さらに、[VS Code Extension](../editor-support.md) や [FastAPI Cloud](https://fastapicloud.com) など、他のツールが見つけられない場合があります。そのため、`pyproject.toml` の `entrypoint` を使うことを推奨します。
+
+///
+
## 自動APIドキュメントの確認 { #check-the-automatic-api-docs }
アプリを実行します:
@@ -472,14 +503,14 @@ from .routers.users import router
```console
-$ fastapi dev app/main.py
+$ fastapi dev
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
```
-そして
http://127.0.0.1:8000/docs を開きます。
+そして [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs) を開きます。
すべてのサブモジュール由来のパスを含む自動 API ドキュメントが表示され、正しいパス(および prefix)と正しいタグが使われているのが分かります:
diff --git a/docs/ja/docs/tutorial/body-nested-models.md b/docs/ja/docs/tutorial/body-nested-models.md
index ab78b8f86a..5187eb14e5 100644
--- a/docs/ja/docs/tutorial/body-nested-models.md
+++ b/docs/ja/docs/tutorial/body-nested-models.md
@@ -96,7 +96,7 @@ Pydanticモデルの各属性には型があります。
`str`や`int`、`float`などの通常の単数型の他にも、`str`を継承したより複雑な単数型を使うこともできます。
-すべてのオプションをみるには、
Pydanticの型の概要を確認してください。次の章でいくつかの例をみることができます。
+すべてのオプションをみるには、[Pydantic の型の概要](https://docs.pydantic.dev/latest/concepts/types/)を確認してください。次の章でいくつかの例をみることができます。
例えば、`Image`モデルのように`url`フィールドがある場合、`str`の代わりにPydanticの`HttpUrl`のインスタンスとして宣言することができます:
diff --git a/docs/ja/docs/tutorial/body-updates.md b/docs/ja/docs/tutorial/body-updates.md
index 310530c690..a4fa8bd7be 100644
--- a/docs/ja/docs/tutorial/body-updates.md
+++ b/docs/ja/docs/tutorial/body-updates.md
@@ -2,7 +2,7 @@
## `PUT`による置換での更新 { #update-replacing-with-put }
-項目を更新するには
HTTPの`PUT`操作を使用することができます。
+項目を更新するには[HTTPの`PUT`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT)操作を使用することができます。
`jsonable_encoder`を用いて、入力データをJSONとして保存できるデータに変換することができます(例:NoSQLデータベース)。例えば、`datetime`を`str`に変換します。
@@ -28,7 +28,7 @@
## `PATCH`による部分的な更新 { #partial-updates-with-patch }
-また、
HTTPの`PATCH`操作でデータを*部分的に*更新することもできます。
+また、[HTTPの`PATCH`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH)操作でデータを*部分的に*更新することもできます。
つまり、更新したいデータだけを送信して、残りはそのままにしておくことができます。
@@ -68,7 +68,7 @@
まとめると、部分的な更新を適用するには、次のようにします:
-* (オプションで)`PATCH`の代わりに`PUT`を使用します。
+* (オプションで)`PUT`の代わりに`PATCH`を使用します。
* 保存されているデータを取得します。
* そのデータをPydanticモデルにいれます。
* 入力モデルからデフォルト値を含まない`dict`を生成します(`exclude_unset`を使用します)。
@@ -95,6 +95,6 @@
そのため、すべての属性を省略できる部分的な変更を受け取りたい場合は、すべての属性をオプションとしてマークしたモデルを用意する必要があります(デフォルト値または`None`を使用して)。
-**更新** のためのオプション値がすべて設定されているモデルと、**作成** のための必須値が設定されているモデルを区別するには、[追加モデル](extra-models.md){.internal-link target=_blank}で説明されている考え方を利用することができます。
+**更新** のためのオプション値がすべて設定されているモデルと、**作成** のための必須値が設定されているモデルを区別するには、[追加モデル](extra-models.md)で説明されている考え方を利用することができます。
///
diff --git a/docs/ja/docs/tutorial/body.md b/docs/ja/docs/tutorial/body.md
index 7c939bdfa0..9f100738c0 100644
--- a/docs/ja/docs/tutorial/body.md
+++ b/docs/ja/docs/tutorial/body.md
@@ -6,7 +6,7 @@
APIはほとんどの場合 **レスポンス** ボディを送信する必要があります。しかしクライアントは、常に **リクエストボディ** を送信する必要があるとは限りません。場合によっては、クエリパラメータ付きのパスだけをリクエストして、ボディを送信しないこともあります。
-**リクエスト**ボディを宣言するには、
Pydantic モデルを使用し、その強力な機能とメリットをすべて利用します。
+**リクエスト**ボディを宣言するには、[Pydantic](https://docs.pydantic.dev/) モデルを使用し、その強力な機能とメリットをすべて利用します。
/// info | 情報
@@ -73,7 +73,7 @@ APIはほとんどの場合 **レスポンス** ボディを送信する必要
* データが無効な場合は、どこで何が不正なデータだったのかを正確に示す、分かりやすい明確なエラーを返します。
* 受け取ったデータをパラメータ `item` に渡します。
* 関数内で `Item` 型として宣言したため、すべての属性とその型について、エディタサポート(補完など)も利用できます。
-* モデル向けの
JSON Schema 定義を生成します。プロジェクトにとって意味があるなら、他の場所でも好きなように利用できます。
+* モデル向けの [JSON Schema](https://json-schema.org) 定義を生成します。プロジェクトにとって意味があるなら、他の場所でも好きなように利用できます。
* それらのスキーマは生成されるOpenAPIスキーマの一部となり、自動ドキュメントの
UIs で使用されます。
## 自動ドキュメント { #automatic-docs }
@@ -102,15 +102,15 @@ APIはほとんどの場合 **レスポンス** ボディを送信する必要
これをサポートするために、Pydantic自体にもいくつかの変更が加えられました。
-前述のスクリーンショットは
Visual Studio Code で撮影されたものです。
+前述のスクリーンショットは [Visual Studio Code](https://code.visualstudio.com) で撮影されたものです。
-ただし、
PyCharm や、他のほとんどのPythonエディタでも同じエディタサポートを得られます:
+ただし、[PyCharm](https://www.jetbrains.com/pycharm/) や、他のほとんどのPythonエディタでも同じエディタサポートを得られます:

/// tip | 豆知識
-エディタとして
PyCharm を使用している場合、
Pydantic PyCharm Plugin を使用できます。
+エディタとして [PyCharm](https://www.jetbrains.com/pycharm/) を使用している場合、[Pydantic PyCharm Plugin](https://github.com/koxudaxi/pydantic-pycharm-plugin/) を使用できます。
以下により、Pydanticモデルに対するエディタサポートが改善されます:
@@ -163,4 +163,4 @@ FastAPIは、デフォルト値 `= None` があるため、`q` の値が必須
## Pydanticを使わない方法 { #without-pydantic }
-Pydanticモデルを使いたくない場合は、**Body** パラメータも使用できます。[Body - Multiple Parameters: Singular values in body](body-multiple-params.md#singular-values-in-body){.internal-link target=_blank} のドキュメントを参照してください。
+Pydanticモデルを使いたくない場合は、**Body** パラメータも使用できます。[Body - 複数のパラメータ: ボディ内の単一値](body-multiple-params.md#singular-values-in-body) のドキュメントを参照してください。
diff --git a/docs/ja/docs/tutorial/cors.md b/docs/ja/docs/tutorial/cors.md
index 5136a7fd5f..3716b179b9 100644
--- a/docs/ja/docs/tutorial/cors.md
+++ b/docs/ja/docs/tutorial/cors.md
@@ -1,6 +1,6 @@
# CORS (Cross-Origin Resource Sharing) { #cors-cross-origin-resource-sharing }
-
CORSまたは「Cross-Origin Resource Sharing」 は、ブラウザで実行されているフロントエンドにバックエンドと通信するJavaScriptコードがあり、そのバックエンドがフロントエンドとは異なる「オリジン」にある状況を指します。
+[CORSまたは「Cross-Origin Resource Sharing」](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) は、ブラウザで実行されているフロントエンドにバックエンドと通信するJavaScriptコードがあり、そのバックエンドがフロントエンドとは異なる「オリジン」にある状況を指します。
## オリジン { #origin }
@@ -56,10 +56,10 @@
* `allow_origins` - オリジン間リクエストを許可するオリジンのリスト。例えば、`['https://example.org', 'https://www.example.org']`。`['*']`を使用して任意のオリジンを許可できます。
* `allow_origin_regex` - オリジン間リクエストを許可するオリジンの正規表現文字列。例えば、`'https://.*\.example\.org'`。
* `allow_methods` - オリジン間リクエストで許可するHTTPメソッドのリスト。デフォルトは `['GET']` です。`['*']`を使用してすべての標準メソッドを許可できます。
-* `allow_headers` - オリジン間リクエストでサポートするHTTPリクエストヘッダーのリスト。デフォルトは `[]` です。`['*']`を使用して、すべてのヘッダーを許可できます。
シンプルなCORSリクエストでは、 `Accept` 、 `Accept-Language` 、 `Content-Language` 、 `Content-Type` ヘッダーが常に許可されます。
+* `allow_headers` - オリジン間リクエストでサポートするHTTPリクエストヘッダーのリスト。デフォルトは `[]` です。`['*']`を使用して、すべてのヘッダーを許可できます。[シンプルなCORSリクエスト](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests)では、 `Accept` 、 `Accept-Language` 、 `Content-Language` 、 `Content-Type` ヘッダーが常に許可されます。
* `allow_credentials` - オリジン間リクエストでCookieをサポートする必要があることを示します。デフォルトは `False` です。
- `allow_credentials` が `True` に設定されている場合、`allow_origins`、`allow_methods`、`allow_headers` のいずれも `['*']` に設定できません。これらはすべて
明示的に指定する必要があります。
+ `allow_credentials` が `True` に設定されている場合、`allow_origins`、`allow_methods`、`allow_headers` のいずれも `['*']` に設定できません。これらはすべて[明示的に指定](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#credentialed_requests_and_wildcards)する必要があります。
* `expose_headers` - ブラウザからアクセスできるようにするレスポンスヘッダーを示します。デフォルトは `[]` です。
* `max_age` - ブラウザがCORSレスポンスをキャッシュする最大時間を秒単位で設定します。デフォルトは `600` です。
@@ -78,7 +78,7 @@
## より詳しい情報 { #more-info }
-
CORSについてより詳しい情報は、
Mozilla CORS documentation を参照して下さい。
+
CORSについてより詳しい情報は、[Mozilla CORS documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) を参照して下さい。
/// note | 技術詳細
diff --git a/docs/ja/docs/tutorial/debugging.md b/docs/ja/docs/tutorial/debugging.md
index 9d88ba42b5..023e988dce 100644
--- a/docs/ja/docs/tutorial/debugging.md
+++ b/docs/ja/docs/tutorial/debugging.md
@@ -59,7 +59,7 @@ Pythonによって自動的に作成されたファイル内の内部変数 `__n
```Python
from myapp import app
-# Some more code
+# その他のコード
```
その場合、`myapp.py` 内の自動的に作成された変数 `__name__` は、値として `"__main__"` を持ちません。
@@ -74,7 +74,7 @@ from myapp import app
/// info | 情報
-より詳しい情報は、
公式Pythonドキュメントを参照してください。
+より詳しい情報は、[公式Pythonドキュメント](https://docs.python.org/3/library/__main__.html)を参照してください。
///
diff --git a/docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md b/docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
index d0a2b16721..573ccc1f96 100644
--- a/docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
+++ b/docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
@@ -32,7 +32,7 @@
この例では、架空のカスタムヘッダー `X-Key` と `X-Token` を使用しています。
-しかし実際のケースでセキュリティを実装する際は、統合された[Security utilities(次の章)](../security/index.md){.internal-link target=_blank}を使うことで、より多くの利点を得られます。
+しかし実際のケースでセキュリティを実装する際は、統合された[Security utilities(次の章)](../security/index.md)を使うことで、より多くの利点を得られます。
///
@@ -62,7 +62,7 @@
## *path operation*のグループに対する依存関係 { #dependencies-for-a-group-of-path-operations }
-後で、より大きなアプリケーションを(おそらく複数ファイルで)構造化する方法([Bigger Applications - Multiple Files](../../tutorial/bigger-applications.md){.internal-link target=_blank})について読むときに、*path operation*のグループに対して単一の`dependencies`パラメータを宣言する方法を学びます。
+後で、より大きなアプリケーションを(おそらく複数ファイルで)構造化する方法([Bigger Applications - Multiple Files](../../tutorial/bigger-applications.md))について読むときに、*path operation*のグループに対して単一の`dependencies`パラメータを宣言する方法を学びます。
## グローバル依存関係 { #global-dependencies }
diff --git a/docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md b/docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md
index 380dcb536b..83e4f88098 100644
--- a/docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md
+++ b/docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md
@@ -14,8 +14,8 @@ FastAPIは、いくつかの
`@contextlib.contextmanager`または
-* `@contextlib.asynccontextmanager`
+* [`@contextlib.contextmanager`](https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager) または
+* [`@contextlib.asynccontextmanager`](https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager)
これらは **FastAPI** の依存関係として使用するのに有効です。
@@ -87,7 +87,7 @@ FastAPIは、いくつかのContext Managersのおかげで動作します。
+これはPythonの[コンテキストマネージャ](https://docs.python.org/3/library/contextlib.html)のおかげで動作します。
**FastAPI** はこれを実現するために内部的に使用しています。
@@ -111,7 +111,7 @@ FastAPIは、いくつかのファイルを読み込むには`with`を使用することができます:
+例えば、[ファイルを読み込むには`with`を使用することができます](https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files):
```Python
with open("./somefile.txt") as f:
@@ -264,7 +264,7 @@ with open("./somefile.txt") as f:
///
-Pythonでは、以下の2つのメソッドを持つクラスを作成する: `__enter__()`と`__exit__()`ことでコンテキストマネージャを作成することができます。
+Pythonでは、[以下の2つのメソッドを持つクラスを作成する: `__enter__()`と`__exit__()`](https://docs.python.org/3/reference/datamodel.html#context-managers)ことでコンテキストマネージャを作成することができます。
また、依存関数の中で`with`や`async with`文を使用することによって`yield`を持つ **FastAPI** の依存関係の中でそれらを使用することができます:
@@ -272,10 +272,10 @@ Pythonでは、`@contextlib.contextmanager` または
-* `@contextlib.asynccontextmanager`
+* [`@contextlib.contextmanager`](https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager) または
+* [`@contextlib.asynccontextmanager`](https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager)
これらを使って、関数を単一の`yield`でデコレートすることができます。
diff --git a/docs/ja/docs/tutorial/dependencies/global-dependencies.md b/docs/ja/docs/tutorial/dependencies/global-dependencies.md
index 284da2181b..35a77a5f76 100644
--- a/docs/ja/docs/tutorial/dependencies/global-dependencies.md
+++ b/docs/ja/docs/tutorial/dependencies/global-dependencies.md
@@ -2,14 +2,14 @@
アプリケーションの種類によっては、アプリ全体に依存関係を追加したい場合があります。
-[`dependencies` を path operation のデコレータに追加](dependencies-in-path-operation-decorators.md){.internal-link target=_blank}できるのと同様に、`FastAPI` アプリケーション自体にも追加できます。
+[`dependencies` を path operation のデコレータに追加](dependencies-in-path-operation-decorators.md)できるのと同様に、`FastAPI` アプリケーション自体にも追加できます。
その場合、アプリケーション内のすべての path operation に適用されます:
{* ../../docs_src/dependencies/tutorial012_an_py310.py hl[17] *}
-また、[`dependencies` を path operation のデコレータに追加](dependencies-in-path-operation-decorators.md){.internal-link target=_blank}する節で説明した考え方はすべて引き続き当てはまりますが、この場合はアプリ内のすべての path operation に対して適用されます。
+また、[`dependencies` を path operation のデコレータに追加](dependencies-in-path-operation-decorators.md)する節で説明した考え方はすべて引き続き当てはまりますが、この場合はアプリ内のすべての path operation に対して適用されます。
## path operation のグループに対する依存関係 { #dependencies-for-groups-of-path-operations }
-後で、複数ファイルを含む大規模アプリケーションの構成方法([大規模アプリケーション - 複数ファイル](../../tutorial/bigger-applications.md){.internal-link target=_blank})を読むと、path operation のグループに対して 1 つの `dependencies` パラメータを宣言する方法を学びます。
+後で、複数ファイルを含む大規模アプリケーションの構成方法([大規模アプリケーション - 複数ファイル](../../tutorial/bigger-applications.md))を読むと、path operation のグループに対して 1 つの `dependencies` パラメータを宣言する方法を学びます。
diff --git a/docs/ja/docs/tutorial/dependencies/index.md b/docs/ja/docs/tutorial/dependencies/index.md
index 64cb4f79e4..a3cf3e26b5 100644
--- a/docs/ja/docs/tutorial/dependencies/index.md
+++ b/docs/ja/docs/tutorial/dependencies/index.md
@@ -57,7 +57,7 @@ FastAPI はバージョン 0.95.0 で `Annotated` のサポートを追加し(
古いバージョンを使用している場合、`Annotated` を使おうとするとエラーになります。
-`Annotated` を使用する前に、少なくとも 0.95.1 まで [FastAPI のバージョンをアップグレード](../../deployment/versions.md#upgrading-the-fastapi-versions){.internal-link target=_blank} してください。
+`Annotated` を使用する前に、少なくとも 0.95.1 まで [FastAPI のバージョンをアップグレード](../../deployment/versions.md#upgrading-the-fastapi-versions) してください。
///
@@ -152,7 +152,7 @@ commons: Annotated[dict, Depends(common_parameters)]
/// note | 備考
-わからない場合は、ドキュメントの[Async: *"In a hurry?"*](../../async.md#in-a-hurry){.internal-link target=_blank}の中の`async`と`await`についてのセクションを確認してください。
+わからない場合は、ドキュメントの[Async: *「急いでいますか?」*](../../async.md#in-a-hurry)の中の`async`と`await`についてのセクションを確認してください。
///
diff --git a/docs/ja/docs/tutorial/encoder.md b/docs/ja/docs/tutorial/encoder.md
index 33cc6ae48c..e4745faf7c 100644
--- a/docs/ja/docs/tutorial/encoder.md
+++ b/docs/ja/docs/tutorial/encoder.md
@@ -12,7 +12,7 @@ JSON互換のデータのみを受信するデータベース`fake_db`がある
例えば、`datetime`オブジェクトはJSONと互換性がないので、受け取られません。
-そのため、`datetime`オブジェクトはISO形式のデータを含む`str`に変換されなければなりません。
+そのため、`datetime`オブジェクトは[ISO形式](https://en.wikipedia.org/wiki/ISO_8601)のデータを含む`str`に変換されなければなりません。
同様に、このデータベースはPydanticモデル(属性を持つオブジェクト)を受け取らず、`dict`だけを受け取ります。
@@ -24,7 +24,7 @@ Pydanticモデルのようなオブジェクトを受け取り、JSON互換版
この例では、Pydanticモデルを`dict`に、`datetime`を`str`に変換します。
-呼び出した結果は、Pythonの標準の`json.dumps()`でエンコードできるものです。
+呼び出した結果は、Pythonの標準の[`json.dumps()`](https://docs.python.org/3/library/json.html#json.dumps)でエンコードできるものです。
これはJSON形式のデータを含む大きな`str`を(文字列として)返しません。JSONと互換性のある値とサブの値を持つPython標準のデータ構造(例:`dict`)を返します。
diff --git a/docs/ja/docs/tutorial/extra-data-types.md b/docs/ja/docs/tutorial/extra-data-types.md
index 4ed84e86f8..1bbfeb71e3 100644
--- a/docs/ja/docs/tutorial/extra-data-types.md
+++ b/docs/ja/docs/tutorial/extra-data-types.md
@@ -36,7 +36,7 @@
* `datetime.timedelta`:
* Pythonの`datetime.timedelta`です。
* リクエストとレスポンスでは合計秒数の`float`で表現されます。
- * Pydanticでは「ISO 8601 time diff encoding」として表現することも可能です。詳細はドキュメントを参照してください。
+ * Pydanticでは「ISO 8601 time diff encoding」として表現することも可能です。[詳細はドキュメントを参照してください](https://docs.pydantic.dev/latest/concepts/serialization/#custom-serializers)。
* `frozenset`:
* リクエストとレスポンスでは`set`と同じように扱われます:
* リクエストでは、リストが読み込まれ、重複を排除して`set`に変換されます。
@@ -49,7 +49,7 @@
* `Decimal`:
* Pythonの標準的な`Decimal`です。
* リクエストとレスポンスでは`float`と同じように扱われます。
-* Pydanticの全ての有効な型はこちらで確認できます: Pydantic data types。
+* 有効なPydanticのデータ型はここで確認できます: [Pydantic のデータ型](https://docs.pydantic.dev/latest/usage/types/types/)。
## 例 { #example }
diff --git a/docs/ja/docs/tutorial/extra-models.md b/docs/ja/docs/tutorial/extra-models.md
index 951e8b35e4..7fac3e8cd8 100644
--- a/docs/ja/docs/tutorial/extra-models.md
+++ b/docs/ja/docs/tutorial/extra-models.md
@@ -162,11 +162,11 @@ UserInDB(
OpenAPIでは`anyOf`で定義されます。
-そのためには、標準的なPythonの型ヒント`typing.Union`を使用します:
+そのためには、標準的なPythonの型ヒント[`typing.Union`](https://docs.python.org/3/library/typing.html#typing.Union)を使用します:
/// note | 備考
-`Union`を定義する場合は、最も具体的な型を先に、その後により具体性の低い型を含めてください。以下の例では、より具体的な`PlaneItem`が`Union[PlaneItem, CarItem]`内で`CarItem`より前に来ています。
+[`Union`](https://docs.pydantic.dev/latest/concepts/types/#unions)を定義する場合は、最も具体的な型を先に、その後により具体性の低い型を含めてください。以下の例では、より具体的な`PlaneItem`が`Union[PlaneItem, CarItem]`内で`CarItem`より前に来ています。
///
diff --git a/docs/ja/docs/tutorial/first-steps.md b/docs/ja/docs/tutorial/first-steps.md
index 37d71a9f72..26cb49159c 100644
--- a/docs/ja/docs/tutorial/first-steps.md
+++ b/docs/ja/docs/tutorial/first-steps.md
@@ -11,7 +11,7 @@
```console
-$
fastapi dev
main.py
+$
fastapi dev
FastAPI Starting development server 🚀
@@ -58,7 +58,7 @@ INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
### チェック { #check-it }
-ブラウザで
http://127.0.0.1:8000を開きます。
+ブラウザで[http://127.0.0.1:8000](http://127.0.0.1:8000)を開きます。
次のようなJSONレスポンスが表示されます:
@@ -68,17 +68,17 @@ INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
### 対話的APIドキュメント { #interactive-api-docs }
-次に、
http://127.0.0.1:8000/docsにアクセスします。
+次に、[http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)にアクセスします。
-自動生成された対話的APIドキュメントが表示されます (
Swagger UIで提供):
+自動生成された対話的APIドキュメントが表示されます([Swagger UI](https://github.com/swagger-api/swagger-ui)で提供):

### 代替APIドキュメント { #alternative-api-docs }
-次に、
http://127.0.0.1:8000/redocにアクセスします。
+次に、[http://127.0.0.1:8000/redoc](http://127.0.0.1:8000/redoc)にアクセスします。
-先ほどとは異なる、自動生成された対話的APIドキュメントが表示されます (
ReDocによって提供):
+先ほどとは異なる、自動生成された対話的APIドキュメントが表示されます([ReDoc](https://github.com/Rebilly/ReDoc)によって提供):

@@ -92,7 +92,7 @@ INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
#### API「スキーマ」 { #api-schema }
-ここでは、
OpenAPIはAPIのスキーマ定義の方法を規定する仕様です。
+ここでは、[OpenAPI](https://github.com/OAI/OpenAPI-Specification)はAPIのスキーマ定義の方法を規定する仕様です。
このスキーマ定義はAPIパス、受け取り可能なパラメータなどが含まれます。
@@ -110,7 +110,7 @@ OpenAPIはAPIのためのAPIスキーマを定義します。そして、その
素のOpenAPIスキーマがどのようなものか興味がある場合、FastAPIはすべてのAPIの説明を含むJSON(スキーマ)を自動的に生成します。
-次の場所で直接確認できます:
http://127.0.0.1:8000/openapi.json.
+次の場所で直接確認できます: [http://127.0.0.1:8000/openapi.json](http://127.0.0.1:8000/openapi.json).
次のようなJSONが表示されます。
@@ -143,9 +143,58 @@ OpenAPIスキーマは、FastAPIに含まれている2つのインタラクテ
また、APIと通信するクライアント用のコードを自動的に生成するために使用することもできます。たとえば、フロントエンド、モバイル、またはIoTアプリケーションです。
+### `pyproject.toml`でアプリの`entrypoint`を設定 { #configure-the-app-entrypoint-in-pyproject-toml }
+
+`pyproject.toml`でアプリの場所を次のように設定できます:
+
+```toml
+[tool.fastapi]
+entrypoint = "main:app"
+```
+
+この`entrypoint`は、`fastapi`コマンドに対して、次のようにアプリをインポートすべきであることを伝えます:
+
+```python
+from main import app
+```
+
+もしコード構成が次のようになっている場合:
+
+```
+.
+├── backend
+│ ├── main.py
+│ ├── __init__.py
+```
+
+このときは`entrypoint`を次のように設定します:
+
+```toml
+[tool.fastapi]
+entrypoint = "backend.main:app"
+```
+
+これは次と同等です:
+
+```python
+from backend.main import app
+```
+
+### パス付きの`fastapi dev` { #fastapi-dev-with-path }
+
+`fastapi dev`コマンドにファイルパスを渡すこともでき、使用すべきFastAPIのappオブジェクトを推測します:
+
+```console
+$ fastapi dev main.py
+```
+
+ただし、その場合は毎回`fastapi`コマンドを呼ぶたびに正しいパスを渡すことを覚えておく必要があります。
+
+さらに、他のツール(たとえば、[VS Code 拡張機能](../editor-support.md)や[FastAPI Cloud](https://fastapicloud.com))が見つけられない場合があります。そのため、`pyproject.toml`の`entrypoint`を使うことを推奨します。
+
### アプリをデプロイ(任意) { #deploy-your-app-optional }
-任意でFastAPIアプリを
FastAPI Cloudにデプロイできます。まだなら、待機リストに登録してください。 🚀
+任意でFastAPIアプリを[FastAPI Cloud](https://fastapicloud.com)にデプロイできます。まだなら、待機リストに登録してください。 🚀
すでに**FastAPI Cloud**アカウントがある場合(待機リストから招待済みの場合😉)、1コマンドでアプリケーションをデプロイできます。
@@ -191,7 +240,7 @@ Deploying to FastAPI Cloud...
`FastAPI`は`Starlette`を直接継承するクラスです。
-`FastAPI`でも
Starletteのすべての機能を利用可能です。
+`FastAPI`でも[Starlette](https://www.starlette.dev/)のすべての機能を利用可能です。
///
@@ -272,7 +321,7 @@ APIを構築するときは、通常、これらの特定のHTTPメソッドを
* パス `/`
*
get オペレーション
-/// info | `@decorator` Info
+/// info | `@decorator` 情報
Pythonにおける`@something`シンタックスはデコレータと呼ばれます。
@@ -335,7 +384,7 @@ Pythonにおける`@something`シンタックスはデコレータと呼ばれ
/// note | 備考
-違いが分からない場合は、[Async: *"急いでいますか?"*](../async.md#in-a-hurry){.internal-link target=_blank}を確認してください。
+違いが分からない場合は、[Async: *「急いでいますか?」*](../async.md#in-a-hurry)を確認してください。
///
@@ -351,11 +400,11 @@ JSONに自動的に変換されるオブジェクトやモデルは他にもた
### Step 6: デプロイする { #step-6-deploy-it }
-**
FastAPI Cloud**に1コマンドでアプリをデプロイします: `fastapi deploy`. 🎉
+**[FastAPI Cloud](https://fastapicloud.com)**に1コマンドでアプリをデプロイします: `fastapi deploy`. 🎉
#### FastAPI Cloudについて { #about-fastapi-cloud }
-**
FastAPI Cloud**は、**FastAPI**の作者とそのチームによって開発されています。
+**[FastAPI Cloud](https://fastapicloud.com)**は、**FastAPI**の作者とそのチームによって開発されています。
最小限の労力でAPIの**構築**、**デプロイ**、**アクセス**を行うプロセスを合理化します。
diff --git a/docs/ja/docs/tutorial/handling-errors.md b/docs/ja/docs/tutorial/handling-errors.md
index dc74e3f6cc..8d0190cb0b 100644
--- a/docs/ja/docs/tutorial/handling-errors.md
+++ b/docs/ja/docs/tutorial/handling-errors.md
@@ -81,7 +81,7 @@ Pythonの例外なので、`return`ではなく、`raise`です。
## カスタム例外ハンドラのインストール { #install-custom-exception-handlers }
-カスタム例外ハンドラは
Starletteと同じ例外ユーティリティを使用して追加することができます。
+カスタム例外ハンドラは[Starletteと同じ例外ユーティリティ](https://www.starlette.dev/exceptions/)を使用して追加することができます。
あなた(または使用しているライブラリ)が`raise`するかもしれないカスタム例外`UnicornException`があるとしましょう。
diff --git a/docs/ja/docs/tutorial/index.md b/docs/ja/docs/tutorial/index.md
index d298abc62d..8182c92ae9 100644
--- a/docs/ja/docs/tutorial/index.md
+++ b/docs/ja/docs/tutorial/index.md
@@ -15,7 +15,7 @@
```console
-$
fastapi dev
main.py
+$
fastapi dev
FastAPI Starting development server 🚀
@@ -62,7 +62,7 @@ $
fastapi dev
@@ -76,7 +76,7 @@ $ pip install "fastapi[standard]"
/// note | 備考
-`pip install "fastapi[standard]"` でインストールすると、`fastapi-cloud-cli` を含むいくつかのデフォルトのオプション標準依存関係が付属します。これにより、FastAPI Cloud にデプロイできます。
+`pip install "fastapi[standard]"` でインストールすると、`fastapi-cloud-cli` を含むいくつかのデフォルトのオプション標準依存関係が付属します。これにより、[FastAPI Cloud](https://fastapicloud.com) にデプロイできます。
これらのオプション依存関係が不要な場合は、代わりに `pip install fastapi` をインストールできます。
@@ -84,6 +84,12 @@ $ pip install "fastapi[standard]"
///
+/// tip | 豆知識
+
+FastAPI には [VS Code の公式拡張機能](https://marketplace.visualstudio.com/items?itemName=FastAPILabs.fastapi-vscode)(および Cursor)があります。path operation エクスプローラー、path operation 検索、テスト内の CodeLens ナビゲーション(テストから定義へジャンプ)、そして FastAPI Cloud へのデプロイやログなど、さまざまな機能をエディターから利用できます。
+
+///
+
## 高度なユーザーガイド { #advanced-user-guide }
この **チュートリアル - ユーザーガイド** の後で、後から読める **高度なユーザーガイド** もあります。
diff --git a/docs/ja/docs/tutorial/metadata.md b/docs/ja/docs/tutorial/metadata.md
index 3b70bf2f41..d6882797bf 100644
--- a/docs/ja/docs/tutorial/metadata.md
+++ b/docs/ja/docs/tutorial/metadata.md
@@ -76,7 +76,7 @@ OpenAPI 3.1.0 および FastAPI 0.99.0 以降では、`license_info` を `url`
/// info | 情報
-タグの詳細は [Path Operation Configuration](path-operation-configuration.md#tags){.internal-link target=_blank} を参照してください。
+タグの詳細は [Path Operation の設定](path-operation-configuration.md#tags) を参照してください。
///
diff --git a/docs/ja/docs/tutorial/middleware.md b/docs/ja/docs/tutorial/middleware.md
index 103d6e2c06..d55ab3ed94 100644
--- a/docs/ja/docs/tutorial/middleware.md
+++ b/docs/ja/docs/tutorial/middleware.md
@@ -15,7 +15,7 @@
`yield` を使った依存関係をもつ場合は、終了コードはミドルウェアの *後に* 実行されます。
-バックグラウンドタスク ([バックグラウンドタスク](background-tasks.md){.internal-link target=_blank} セクションで説明します。後で確認できます) がある場合は、それらは全てのミドルウェアの *後に* 実行されます。
+バックグラウンドタスク ([バックグラウンドタスク](background-tasks.md) セクションで説明します。後で確認できます) がある場合は、それらは全てのミドルウェアの *後に* 実行されます。
///
@@ -35,9 +35,9 @@
/// tip | 豆知識
-カスタムの独自ヘッダーは `X-` プレフィックスを使用して追加できる点に注意してください。
+カスタムの独自ヘッダーは [`X-` プレフィックスを使用](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers)して追加できる点に注意してください。
-ただし、ブラウザのクライアントに表示させたいカスタムヘッダーがある場合は、StarletteのCORSドキュメントに記載されているパラメータ `expose_headers` を使用して、それらをCORS設定に追加する必要があります ([CORS (Cross-Origin Resource Sharing)](cors.md){.internal-link target=_blank})。
+ただし、ブラウザのクライアントに表示させたいカスタムヘッダーがある場合は、[StarletteのCORSドキュメント](https://www.starlette.dev/middleware/#corsmiddleware)に記載されているパラメータ `expose_headers` を使用して、それらをCORS設定に追加する必要があります ([CORS (Cross-Origin Resource Sharing)](cors.md))。
///
@@ -61,7 +61,7 @@
/// tip | 豆知識
-ここでは、これらのユースケースに対してより正確になり得るため、`time.time()` の代わりに `time.perf_counter()` を使用しています。 🤓
+ここでは、これらのユースケースに対してより正確になり得るため、`time.time()` の代わりに [`time.perf_counter()`](https://docs.python.org/3/library/time.html#time.perf_counter) を使用しています。 🤓
///
@@ -90,6 +90,6 @@ app.add_middleware(MiddlewareB)
## その他のミドルウェア { #other-middlewares }
-他のミドルウェアの詳細については、[高度なユーザーガイド: 高度なミドルウェア](../advanced/middleware.md){.internal-link target=_blank}を参照してください。
+他のミドルウェアの詳細については、[高度なユーザーガイド: 高度なミドルウェア](../advanced/middleware.md)を参照してください。
次のセクションでは、ミドルウェアを使用して CORS を処理する方法について説明します。
diff --git a/docs/ja/docs/tutorial/path-operation-configuration.md b/docs/ja/docs/tutorial/path-operation-configuration.md
index 556cc6b148..25a2783ea1 100644
--- a/docs/ja/docs/tutorial/path-operation-configuration.md
+++ b/docs/ja/docs/tutorial/path-operation-configuration.md
@@ -58,7 +58,7 @@
説明文は長くて複数行におよぶ傾向があるので、関数docstring内に*path operation*の説明文を宣言できます。すると、**FastAPI** は説明文を読み込んでくれます。
-docstringにMarkdownを記述すれば、正しく解釈されて表示されます。(docstringのインデントを考慮して)
+docstringに[Markdown](https://en.wikipedia.org/wiki/Markdown)を記述すれば、正しく解釈されて表示されます。(docstringのインデントを考慮して)
{* ../../docs_src/path_operation_configuration/tutorial004_py310.py hl[17:25] *}
diff --git a/docs/ja/docs/tutorial/path-params-numeric-validations.md b/docs/ja/docs/tutorial/path-params-numeric-validations.md
index ab3240f042..55930eece2 100644
--- a/docs/ja/docs/tutorial/path-params-numeric-validations.md
+++ b/docs/ja/docs/tutorial/path-params-numeric-validations.md
@@ -14,7 +14,7 @@ FastAPI はバージョン 0.95.0 で`Annotated`のサポートを追加し(
古いバージョンの場合、`Annotated`を使おうとするとエラーになります。
-`Annotated`を使用する前に、FastAPI のバージョンを少なくとも 0.95.1 まで[アップグレードしてください](../deployment/versions.md#upgrading-the-fastapi-versions){.internal-link target=_blank}。
+`Annotated`を使用する前に、FastAPI のバージョンを少なくとも 0.95.1 まで[アップグレードしてください](../deployment/versions.md#upgrading-the-fastapi-versions)。
///
@@ -122,7 +122,7 @@ Pythonはその`*`で何かをすることはありませんが、それ以降
## まとめ { #recap }
-`Query`と`Path`(そしてまだ見たことない他のもの)では、[クエリパラメータと文字列の検証](query-params-str-validations.md){.internal-link target=_blank}と同じようにメタデータと文字列の検証を宣言することができます。
+`Query`と`Path`(そしてまだ見たことない他のもの)では、[クエリパラメータと文字列の検証](query-params-str-validations.md)と同じようにメタデータと文字列の検証を宣言することができます。
また、数値のバリデーションを宣言することもできます:
diff --git a/docs/ja/docs/tutorial/path-params.md b/docs/ja/docs/tutorial/path-params.md
index 5b78eb7b1f..8556b1c375 100644
--- a/docs/ja/docs/tutorial/path-params.md
+++ b/docs/ja/docs/tutorial/path-params.md
@@ -6,7 +6,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
パスパラメータ `item_id` の値は、引数 `item_id` として関数に渡されます。
-したがって、この例を実行して http://127.0.0.1:8000/items/foo にアクセスすると、次のレスポンスが表示されます。
+したがって、この例を実行して [http://127.0.0.1:8000/items/foo](http://127.0.0.1:8000/items/foo) にアクセスすると、次のレスポンスが表示されます。
```JSON
{"item_id":"foo"}
@@ -28,7 +28,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
## データ変換 { #data-conversion }
-この例を実行し、ブラウザで http://127.0.0.1:8000/items/3 を開くと、次のレスポンスが表示されます:
+この例を実行し、ブラウザで [http://127.0.0.1:8000/items/3](http://127.0.0.1:8000/items/3) を開くと、次のレスポンスが表示されます:
```JSON
{"item_id":3}
@@ -44,7 +44,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
## データバリデーション { #data-validation }
-しかしブラウザで http://127.0.0.1:8000/items/foo を開くと、次のHTTPエラーが表示されます:
+しかしブラウザで [http://127.0.0.1:8000/items/foo](http://127.0.0.1:8000/items/foo) を開くと、次のHTTPエラーが表示されます:
```JSON
{
@@ -64,7 +64,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
これは、パスパラメータ `item_id` が `int` ではない値 `"foo"` だからです。
-http://127.0.0.1:8000/items/4.2 で見られるように、`int` のかわりに `float` が与えられた場合にも同様なエラーが表示されます。
+[http://127.0.0.1:8000/items/4.2](http://127.0.0.1:8000/items/4.2) で見られるように、`int` のかわりに `float` が与えられた場合にも同様なエラーが表示されます。
/// check | 確認
@@ -78,7 +78,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
## ドキュメント { #documentation }
-そしてブラウザで http://127.0.0.1:8000/docs を開くと、以下の様な自動的に生成された対話的なAPIドキュメントが表示されます。
+そしてブラウザで [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs) を開くと、以下の様な自動的に生成された対話的なAPIドキュメントが表示されます。
@@ -92,9 +92,9 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
## 標準ベースのメリット、ドキュメンテーションの代替物 { #standards-based-benefits-alternative-documentation }
-また、生成されたスキーマが OpenAPI 標準に従っているので、互換性のあるツールが多数あります。
+また、生成されたスキーマが [OpenAPI](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md) 標準に従っているので、互換性のあるツールが多数あります。
-このため、**FastAPI**自体が代替のAPIドキュメントを提供します(ReDocを使用)。これは、 http://127.0.0.1:8000/redoc にアクセスすると確認できます。
+このため、**FastAPI**自体が代替のAPIドキュメントを提供します(ReDocを使用)。これは、 [http://127.0.0.1:8000/redoc](http://127.0.0.1:8000/redoc) にアクセスすると確認できます。
@@ -102,7 +102,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
## Pydantic { #pydantic }
-すべてのデータバリデーションは Pydantic によって内部で実行されるため、Pydanticの全てのメリットが得られます。そして、安心して利用することができます。
+すべてのデータバリデーションは [Pydantic](https://docs.pydantic.dev/) によって内部で実行されるため、Pydanticの全てのメリットが得られます。そして、安心して利用することができます。
`str`、 `float` 、 `bool` および他の多くの複雑なデータ型を型宣言に使用できます。
diff --git a/docs/ja/docs/tutorial/query-params-str-validations.md b/docs/ja/docs/tutorial/query-params-str-validations.md
index dda4e120bf..d340598019 100644
--- a/docs/ja/docs/tutorial/query-params-str-validations.md
+++ b/docs/ja/docs/tutorial/query-params-str-validations.md
@@ -35,13 +35,13 @@ FastAPI はバージョン 0.95.0 で `Annotated` のサポートを追加し(
古いバージョンの場合、`Annotated` を使おうとするとエラーになります。
-`Annotated` を使う前に、FastAPI のバージョンを少なくとも 0.95.1 にするために、[FastAPI のバージョンをアップグレード](../deployment/versions.md#upgrading-the-fastapi-versions){.internal-link target=_blank}してください。
+`Annotated` を使う前に、FastAPI のバージョンを少なくとも 0.95.1 にするために、[FastAPI のバージョンをアップグレード](../deployment/versions.md#upgrading-the-fastapi-versions)してください。
///
## `q` パラメータの型で `Annotated` を使う { #use-annotated-in-the-type-for-the-q-parameter }
-以前、[Python Types Intro](../python-types.md#type-hints-with-metadata-annotations){.internal-link target=_blank} で `Annotated` を使ってパラメータにメタデータを追加できると説明したことを覚えていますか?
+以前、[Python Types Intro](../python-types.md#type-hints-with-metadata-annotations) で `Annotated` を使ってパラメータにメタデータを追加できると説明したことを覚えていますか?
いよいよ FastAPI で使うときです。 🚀
@@ -158,7 +158,7 @@ FastAPI なしで同じ関数を **別の場所** から **呼び出しても**
`Annotated` を使わずに **(古い)デフォルト値スタイル** を使う場合、FastAPI なしでその関数を **別の場所** で呼び出すとき、正しく動かすために関数へ引数を渡すことを **覚えておく** 必要があります。そうしないと値が期待と異なります(例えば `str` の代わりに `QueryInfo` か、それに類するものになります)。また、エディターも警告せず、Python もその関数の実行で文句を言いません。内部の処理がエラーになるときに初めて問題が出ます。
-`Annotated` は複数のメタデータアノテーションを持てるので、Typer のような別ツールと同じ関数を使うこともできます。 🚀
+`Annotated` は複数のメタデータアノテーションを持てるので、[Typer](https://typer.tiangolo.com/) のような別ツールと同じ関数を使うこともできます。 🚀
## バリデーションをさらに追加する { #add-more-validations }
@@ -348,7 +348,7 @@ http://127.0.0.1:8000/items/?item-query=foobaritems
さて、このパラメータが気に入らなくなったとしましょう。
-それを使っているクライアントがいるので、しばらくは残しておく必要がありますが、ドキュメントにはdeprecatedと明記しておきたいです。
+それを使っているクライアントがいるので、しばらくは残しておく必要がありますが、ドキュメントには廃止予定と明記しておきたいです。
その場合、`Query`にパラメータ`deprecated=True`を渡します:
@@ -370,11 +370,11 @@ http://127.0.0.1:8000/items/?item-query=foobaritems
その場合、通常のバリデーション(例: 値が `str` であることの検証)の後に適用される **カスタムバリデータ関数** を使えます。
-これを行うには、`Annotated` の中で Pydantic の `AfterValidator` を使います。
+これを行うには、`Annotated` の中で [Pydantic の `AfterValidator`](https://docs.pydantic.dev/latest/concepts/validators/#field-after-validator) を使います。
/// tip | 豆知識
-Pydantic には `BeforeValidator` などもあります。 🤓
+Pydantic には [`BeforeValidator`](https://docs.pydantic.dev/latest/concepts/validators/#field-before-validator) などもあります。 🤓
///
diff --git a/docs/ja/docs/tutorial/request-files.md b/docs/ja/docs/tutorial/request-files.md
index 538cf64744..30a494afb0 100644
--- a/docs/ja/docs/tutorial/request-files.md
+++ b/docs/ja/docs/tutorial/request-files.md
@@ -4,9 +4,9 @@
/// info | 情報
-アップロードされたファイルを受け取るには、まず `python-multipart` をインストールします。
+アップロードされたファイルを受け取るには、まず [`python-multipart`](https://github.com/Kludex/python-multipart) をインストールします。
-[仮想環境](../virtual-environments.md){.internal-link target=_blank}を作成して有効化し、次のようにインストールしてください:
+[仮想環境](../virtual-environments.md)を作成して有効化し、次のようにインストールしてください:
```console
$ pip install python-multipart
@@ -63,8 +63,8 @@ $ pip install python-multipart
- 最大サイズまではメモリに保持し、それを超えるとディスクに格納されるファイルです。
- そのため、画像・動画・大きなバイナリなどの大きなファイルでも、メモリを使い果たすことなくうまく動作します。
- アップロードされたファイルからメタデータを取得できます。
-- file-like な `async` インターフェースを持ちます。
-- 実際の Python の `SpooledTemporaryFile` オブジェクトを公開しており、file-like オブジェクトを期待する他のライブラリにそのまま渡せます。
+- [file-like](https://docs.python.org/3/glossary.html#term-file-like-object) な `async` インターフェースを持ちます。
+- 実際の Python の [`SpooledTemporaryFile`](https://docs.python.org/3/library/tempfile.html#tempfile.SpooledTemporaryFile) オブジェクトを公開しており、file-like オブジェクトを期待する他のライブラリにそのまま渡せます。
### `UploadFile` { #uploadfile }
@@ -72,7 +72,7 @@ $ pip install python-multipart
- `filename`: アップロード時の元のファイル名を表す `str`(例: `myimage.jpg`)
- `content_type`: コンテントタイプ(MIME タイプ / メディアタイプ)を表す `str`(例: `image/jpeg`)
-- `file`: `SpooledTemporaryFile`(file-like なオブジェクト)。これは実際の Python のファイルオブジェクトで、「file-like」オブジェクトを期待する関数やライブラリに直接渡せます。
+- `file`: [`SpooledTemporaryFile`](https://docs.python.org/3/library/tempfile.html#tempfile.SpooledTemporaryFile)([file-like](https://docs.python.org/3/glossary.html#term-file-like-object) なオブジェクト)。これは実際の Python のファイルオブジェクトで、「file-like」オブジェクトを期待する関数やライブラリに直接渡せます。
`UploadFile` には次の `async` メソッドがあります。いずれも内部で対応するファイルメソッド(内部の `SpooledTemporaryFile`)を呼び出します。
@@ -121,7 +121,7 @@ HTML フォーム(``)がサーバーにデータを送る方法
ただしフォームにファイルが含まれる場合は、`multipart/form-data` としてエンコードされます。`File` を使うと、**FastAPI** はボディ内の正しい部分からファイルを取得すべきであると認識します。
-これらのエンコーディングやフォームフィールドの詳細は、MDN Web Docs の POST を参照してください。
+これらのエンコーディングやフォームフィールドの詳細は、[MDN Web Docs の `POST`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) を参照してください。
///
diff --git a/docs/ja/docs/tutorial/request-form-models.md b/docs/ja/docs/tutorial/request-form-models.md
index 071867964b..62aa9e2985 100644
--- a/docs/ja/docs/tutorial/request-form-models.md
+++ b/docs/ja/docs/tutorial/request-form-models.md
@@ -1,12 +1,12 @@
# フォームモデル { #form-models }
-FastAPI では、フォームフィールドを宣言するために Pydantic モデルを使用できます。
+FastAPI では、フォームフィールドを宣言するために **Pydantic モデル**を使用できます。
/// info | 情報
-フォームを使うには、まず `python-multipart` をインストールします。
+フォームを使うには、まず [`python-multipart`](https://github.com/Kludex/python-multipart) をインストールします。
-まず [仮想環境](../virtual-environments.md){.internal-link target=_blank} を作成して有効化し、そのうえでインストールしてください。例えば:
+まず [仮想環境](../virtual-environments.md) を作成して有効化し、そのうえでインストールしてください。例えば:
```console
$ pip install python-multipart
diff --git a/docs/ja/docs/tutorial/request-forms-and-files.md b/docs/ja/docs/tutorial/request-forms-and-files.md
index 9a4e299e91..651f07ff01 100644
--- a/docs/ja/docs/tutorial/request-forms-and-files.md
+++ b/docs/ja/docs/tutorial/request-forms-and-files.md
@@ -4,9 +4,9 @@
/// info | 情報
-アップロードされたファイルやフォームデータを受信するには、まず`python-multipart`をインストールします。
+アップロードされたファイルやフォームデータを受信するには、まず[`python-multipart`](https://github.com/Kludex/python-multipart)をインストールします。
-[仮想環境](../virtual-environments.md){.internal-link target=_blank}を作成し、それを有効化してから、例えば次のようにインストールしてください:
+[仮想環境](../virtual-environments.md)を作成し、それを有効化してから、例えば次のようにインストールしてください:
```console
$ pip install python-multipart
diff --git a/docs/ja/docs/tutorial/request-forms.md b/docs/ja/docs/tutorial/request-forms.md
index dda2a4bf7f..c6b2a921a6 100644
--- a/docs/ja/docs/tutorial/request-forms.md
+++ b/docs/ja/docs/tutorial/request-forms.md
@@ -4,9 +4,9 @@ JSONの代わりにフィールドを受け取る場合は、`Form`を使用し
/// info | 情報
-フォームを使うためには、まず`python-multipart`をインストールします。
+フォームを使うためには、まず[`python-multipart`](https://github.com/Kludex/python-multipart)をインストールします。
-必ず[仮想環境](../virtual-environments.md){.internal-link target=_blank}を作成して有効化してから、例えば次のようにインストールしてください:
+必ず[仮想環境](../virtual-environments.md)を作成して有効化してから、例えば次のようにインストールしてください:
```console
$ pip install python-multipart
@@ -56,7 +56,7 @@ HTMLフォーム(``)がサーバにデータを送信する方
しかし、フォームがファイルを含む場合は、`multipart/form-data`としてエンコードされます。ファイルの扱いについては次の章で説明します。
-これらのエンコーディングやフォームフィールドの詳細については、MDNのPOSTのウェブドキュメントを参照してください。
+これらのエンコーディングやフォームフィールドの詳細については、[MDN の `POST` ウェブドキュメント](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST)を参照してください。
///
diff --git a/docs/ja/docs/tutorial/response-model.md b/docs/ja/docs/tutorial/response-model.md
index 07dc201233..b4024e0a02 100644
--- a/docs/ja/docs/tutorial/response-model.md
+++ b/docs/ja/docs/tutorial/response-model.md
@@ -13,6 +13,7 @@ FastAPIはこの戻り値の型を使って以下を行います:
* OpenAPIの *path operation* に、レスポンス用の **JSON Schema** を追加します。
* これは**自動ドキュメント**で使用されます。
* 自動クライアントコード生成ツールでも使用されます。
+* 返却データを Pydantic を使ってJSONに**シリアライズ**します。Pydantic は内部が**Rust**で実装されているため、**非常に高速**です。
しかし、最も重要なのは:
@@ -73,9 +74,9 @@ FastAPIはこの `response_model` を使って、データのドキュメント
/// info | 情報
-`EmailStr` を使用するには、最初に `email-validator` をインストールしてください。
+`EmailStr` を使用するには、最初に [`email-validator`](https://github.com/JoshData/python-email-validator) をインストールしてください。
-[仮想環境](../virtual-environments.md){.internal-link target=_blank}を作成して有効化してから、例えば次のようにインストールしてください:
+[仮想環境](../virtual-environments.md)を作成して有効化してから、例えば次のようにインストールしてください:
```console
$ pip install email-validator
@@ -181,7 +182,7 @@ Pydanticフィールドとして有効ではないものを返し、ツール(
### レスポンスを直接返す { #return-a-response-directly }
-最も一般的なケースは、[高度なドキュメントで後述する「Responseを直接返す」](../advanced/response-directly.md){.internal-link target=_blank}場合です。
+最も一般的なケースは、[高度なドキュメントで後述する「Responseを直接返す」](../advanced/response-directly.md)場合です。
{* ../../docs_src/response_model/tutorial003_02_py310.py hl[8,10:11] *}
@@ -257,7 +258,7 @@ Pydanticフィールドとして有効ではないものを返し、ツール(
* `response_model_exclude_defaults=True`
* `response_model_exclude_none=True`
-`exclude_defaults` と `exclude_none` については、Pydanticのドキュメントで説明されている通りです。
+`exclude_defaults` と `exclude_none` については、[Pydanticのドキュメント](https://docs.pydantic.dev/1.10/usage/exporting_models/#modeldict)で説明されている通りです。
///
diff --git a/docs/ja/docs/tutorial/response-status-code.md b/docs/ja/docs/tutorial/response-status-code.md
index d4ac45da65..6150561062 100644
--- a/docs/ja/docs/tutorial/response-status-code.md
+++ b/docs/ja/docs/tutorial/response-status-code.md
@@ -20,7 +20,7 @@
/// info | 情報
-`status_code`は代わりに、Pythonの`http.HTTPStatus`のように、`IntEnum`を受け取ることもできます。
+`status_code`は代わりに、Pythonの[`http.HTTPStatus`](https://docs.python.org/3/library/http.html#http.HTTPStatus)のように、`IntEnum`を受け取ることもできます。
///
@@ -66,7 +66,7 @@ HTTPでは、レスポンスの一部として3桁の数字のステータスコ
/// tip | 豆知識
-それぞれのステータスコードとどのコードが何のためのコードなのかについて詳細はMDN documentation about HTTP status codesを参照してください。
+それぞれのステータスコードとどのコードが何のためのコードなのかについての詳細は、[MDN のHTTPステータスコードに関するドキュメント](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status)を参照してください。
///
@@ -92,7 +92,7 @@ HTTPでは、レスポンスの一部として3桁の数字のステータスコ
また、`from starlette import status`を使うこともできます。
-**FastAPI** は、`開発者の利便性を考慮して、fastapi.status`と同じ`starlette.status`を提供しています。しかし、これはStarletteから直接提供されています。
+**FastAPI** は、開発者の利便性を考慮して、fastapi.statusと同じ`starlette.status`を提供しています。しかし、これはStarletteから直接提供されています。
///
diff --git a/docs/ja/docs/tutorial/schema-extra-example.md b/docs/ja/docs/tutorial/schema-extra-example.md
index 76a6b0f949..87ee85f402 100644
--- a/docs/ja/docs/tutorial/schema-extra-example.md
+++ b/docs/ja/docs/tutorial/schema-extra-example.md
@@ -12,7 +12,7 @@
その追加情報は、そのモデルの出力**JSON Schema**にそのまま追加され、APIドキュメントで使用されます。
-Pydanticのドキュメント: Configurationで説明されているように、`dict`を受け取る属性`model_config`を使用できます。
+[Pydanticのドキュメント: Configuration](https://docs.pydantic.dev/latest/api/config/)で説明されているように、`dict`を受け取る属性`model_config`を使用できます。
生成されるJSON Schemaに表示したい追加データ(`examples`を含む)を含む`dict`を使って、`"json_schema_extra"`を設定できます。
@@ -145,12 +145,12 @@ JSON Schemaには`examples`がなかったため、OpenAPIは自身が改変し
OpenAPIは、仕様の他の部分にも`example`と`examples`フィールドを追加しました:
-* `Parameter Object`(仕様内)。FastAPIの以下で使用されました:
+* [`Parameter Object`(仕様内)](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-object)。FastAPIの以下で使用されました:
* `Path()`
* `Query()`
* `Header()`
* `Cookie()`
-* `Request Body Object`。仕様内の`Media Type Object`の`content`フィールド(仕様内)。FastAPIの以下で使用されました:
+* [`Request Body Object`、`Media Type Object`の`content`フィールド(仕様内)](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object)。FastAPIの以下で使用されました:
* `Body()`
* `File()`
* `Form()`
@@ -163,7 +163,7 @@ OpenAPIは、仕様の他の部分にも`example`と`examples`フィールドを
### JSON Schemaの`examples`フィールド { #json-schemas-examples-field }
-しかしその後、JSON Schemaは新しいバージョンの仕様に`examples`フィールドを追加しました。
+しかしその後、JSON Schemaは新しいバージョンの仕様に[`examples`](https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.9.5)フィールドを追加しました。
そして、新しいOpenAPI 3.1.0は、この新しいフィールド`examples`を含む最新バージョン(JSON Schema 2020-12)に基づくようになりました。
diff --git a/docs/ja/docs/tutorial/security/first-steps.md b/docs/ja/docs/tutorial/security/first-steps.md
index 5bf04386a8..e678ebce1c 100644
--- a/docs/ja/docs/tutorial/security/first-steps.md
+++ b/docs/ja/docs/tutorial/security/first-steps.md
@@ -26,11 +26,11 @@
/// info | 情報
-`python-multipart` パッケージは、`pip install "fastapi[standard]"` コマンドを実行すると **FastAPI** と一緒に自動的にインストールされます。
+[`python-multipart`](https://github.com/Kludex/python-multipart) パッケージは、`pip install "fastapi[standard]"` コマンドを実行すると **FastAPI** と一緒に自動的にインストールされます。
しかし、`pip install fastapi` コマンドを使用する場合、`python-multipart` パッケージはデフォルトでは含まれません。
-手動でインストールするには、[仮想環境](../../virtual-environments.md){.internal-link target=_blank}を作成して有効化し、次のコマンドでインストールしてください:
+手動でインストールするには、[仮想環境](../../virtual-environments.md)を作成して有効化し、次のコマンドでインストールしてください:
```console
$ pip install python-multipart
@@ -45,7 +45,7 @@ $ pip install python-multipart
```console
-$ fastapi dev main.py
+$ fastapi dev
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
```
@@ -54,7 +54,7 @@ $ fastapi dev main.py
## 確認 { #check-it }
-次のインタラクティブなドキュメントにアクセスしてください:
http://127.0.0.1:8000/docs。
+次のインタラクティブなドキュメントにアクセスしてください: [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)。
下記のように見えるでしょう:
@@ -140,7 +140,7 @@ OAuth2は、バックエンドやAPIがユーザーを認証するサーバー
相対URLを使っているので、APIが`https://example.com/`にある場合、`https://example.com/token`を参照します。しかし、APIが`https://example.com/api/v1/`にある場合は`https://example.com/api/v1/token`を参照することになります。
-相対 URL を使うことは、[プロキシの背後](../../advanced/behind-a-proxy.md){.internal-link target=_blank}のような高度なユースケースでもアプリケーションを動作させ続けるために重要です。
+相対 URL を使うことは、[プロキシの背後](../../advanced/behind-a-proxy.md)のような高度なユースケースでもアプリケーションを動作させ続けるために重要です。
///
diff --git a/docs/ja/docs/tutorial/security/oauth2-jwt.md b/docs/ja/docs/tutorial/security/oauth2-jwt.md
index 0d6be90a24..9c527121ea 100644
--- a/docs/ja/docs/tutorial/security/oauth2-jwt.md
+++ b/docs/ja/docs/tutorial/security/oauth2-jwt.md
@@ -24,13 +24,13 @@ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4
1週間後、トークンが期限切れとなるとどうなるでしょうか?ユーザーは認可されず、新しいトークンを得るために再びサインインしなければなりません。また、ユーザー(または第三者)がトークンを修正して有効期限を変更しようとした場合、署名が一致しないため、トークンの修正を検知できます。
-JWT トークンを使って遊んでみたいという方は、
https://jwt.io をチェックしてください。
+JWT トークンを使って遊んでみたいという方は、[https://jwt.io](https://jwt.io/) をチェックしてください。
## `PyJWT` のインストール { #install-pyjwt }
PythonでJWTトークンの生成と検証を行うために、`PyJWT`をインストールする必要があります。
-[仮想環境](../../virtual-environments.md){.internal-link target=_blank}を作成し、アクティベートしてから、`pyjwt`をインストールしてください。
+[仮想環境](../../virtual-environments.md)を作成し、アクティベートしてから、`pyjwt`をインストールしてください。
@@ -46,7 +46,7 @@ $ pip install pyjwt
RSAやECDSAのようなデジタル署名アルゴリズムを使用する予定がある場合は、cryptographyライブラリの依存関係`pyjwt[crypto]`をインストールしてください。
-詳細は
PyJWT Installation docsで確認できます。
+詳細は[PyJWT Installation docs](https://pyjwt.readthedocs.io/en/latest/installation.html)で確認できます。
///
@@ -72,7 +72,7 @@ pwdlib は、パスワードのハッシュを処理するための優れたPyth
推奨されるアルゴリズムは「Argon2」です。
-[仮想環境](../../virtual-environments.md){.internal-link target=_blank}を作成し、アクティベートしてから、Argon2付きでpwdlibをインストールしてください。
+[仮想環境](../../virtual-environments.md)を作成し、アクティベートしてから、Argon2付きでpwdlibをインストールしてください。
@@ -200,7 +200,7 @@ IDの衝突を回避するために、ユーザーのJWTトークンを作成す
## 確認 { #check-it }
-サーバーを実行し、ドキュメントに移動します:
http://127.0.0.1:8000/docs。
+サーバーを実行し、ドキュメントに移動します:[http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)。
次のようなユーザーインターフェイスが表示されます:
diff --git a/docs/ja/docs/tutorial/security/simple-oauth2.md b/docs/ja/docs/tutorial/security/simple-oauth2.md
index c371b0acf6..a47321576c 100644
--- a/docs/ja/docs/tutorial/security/simple-oauth2.md
+++ b/docs/ja/docs/tutorial/security/simple-oauth2.md
@@ -188,7 +188,7 @@ UserInDB(
アクティブなユーザーの場合にのみ `current_user` を取得したいとします。
-そこで、`get_current_user` を依存関係として利用する追加の依存関係 `get_current_active_user` を作成します。
+そこで、`get_current_active_user` を依存関係として利用する追加の依存関係 `get_current_active_user` を作成します。
これら2つの依存関係は、ユーザーが存在しない、または非アクティブである場合に、HTTPエラーを返すだけです。
@@ -216,7 +216,7 @@ HTTP(エラー)ステータスコード 401「UNAUTHORIZED」は、`WWW-Auth
## 動作確認 { #see-it-in-action }
-インタラクティブドキュメントを開きます:
http://127.0.0.1:8000/docs。
+インタラクティブドキュメントを開きます: [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)。
### 認証 { #authenticate }
diff --git a/docs/ja/docs/tutorial/sql-databases.md b/docs/ja/docs/tutorial/sql-databases.md
index 930e433de4..13c71fdb2a 100644
--- a/docs/ja/docs/tutorial/sql-databases.md
+++ b/docs/ja/docs/tutorial/sql-databases.md
@@ -2,9 +2,9 @@
FastAPI は SQL(リレーショナル)データベースの使用を必須にはしません。必要であれば、任意のデータベースを使用できます。
-ここでは
SQLModel を使った例を見ていきます。
+ここでは [SQLModel](https://sqlmodel.tiangolo.com/) を使った例を見ていきます。
-SQLModel は
SQLAlchemy と Pydantic の上に構築されています。FastAPI と同じ作者により、SQL データベースを使う必要がある FastAPI アプリに最適になるように作られています。
+SQLModel は [SQLAlchemy](https://www.sqlalchemy.org/) と Pydantic の上に構築されています。FastAPI と同じ作者により、SQL データベースを使う必要がある FastAPI アプリに最適になるように作られています。
/// tip | 豆知識
@@ -26,15 +26,15 @@ SQLModel は SQLAlchemy をベースにしているため、SQLAlchemy がサポ
/// tip | 豆知識
-フロントエンドやその他のツールを含む、FastAPI と PostgreSQL の公式プロジェクトジェネレーターがあります:
https://github.com/fastapi/full-stack-fastapi-template
+フロントエンドやその他のツールを含む、FastAPI と PostgreSQL の公式プロジェクトジェネレーターがあります: [https://github.com/fastapi/full-stack-fastapi-template](https://github.com/fastapi/full-stack-fastapi-template)
///
-これはとてもシンプルで短いチュートリアルです。データベースや SQL、より高度な機能について学びたい場合は、
SQLModel のドキュメントをご覧ください。
+これはとてもシンプルで短いチュートリアルです。データベースや SQL、より高度な機能について学びたい場合は、[SQLModel のドキュメント](https://sqlmodel.tiangolo.com/)をご覧ください。
## `SQLModel` のインストール { #install-sqlmodel }
-まずは [仮想環境](../virtual-environments.md){.internal-link target=_blank} を作成・有効化し、`sqlmodel` をインストールします:
+まずは [仮想環境](../virtual-environments.md) を作成・有効化し、`sqlmodel` をインストールします:
@@ -65,7 +65,7 @@ $ pip install sqlmodel
* `Field(primary_key=True)` は `id` が SQL データベースのプライマリキーであることを SQLModel に伝えます(SQL のプライマリキーについては SQLModel ドキュメントを参照してください)。
- 注: プライマリキーのフィールドには `int | None` を使っています。これは Python コード内で `id=None` のように「`id` なしでオブジェクトを作成」し、保存時にデータベースが生成することを想定するためです。SQLModel はデータベースが `id` を提供することを理解し、スキーマでは「NULL 不可の `INTEGER` 列」を定義します。詳細は
SQLModel のプライマリキーに関するドキュメント を参照してください。
+ 注: プライマリキーのフィールドには `int | None` を使っています。これは Python コード内で `id=None` のように「`id` なしでオブジェクトを作成」し、保存時にデータベースが生成することを想定するためです。SQLModel はデータベースが `id` を提供することを理解し、スキーマでは「NULL 不可の `INTEGER` 列」を定義します。詳細は [SQLModel のプライマリキーに関するドキュメント](https://sqlmodel.tiangolo.com/tutorial/create-db-and-table/#primary-key-id) を参照してください。
* `Field(index=True)` は、この列に対して SQL のインデックスを作成するよう SQLModel に指示します。これにより、この列でフィルタしてデータを読む場合に検索が高速になります。
@@ -111,7 +111,7 @@ SQLModel の `engine`(内部的には SQLAlchemy の `engine`)は、デー
/// tip | 豆知識
-SQLModel は Alembic をラップしたマイグレーションユーティリティを提供予定ですが、現時点では
Alembic を直接使えます。
+SQLModel は Alembic をラップしたマイグレーションユーティリティを提供予定ですが、現時点では [Alembic](https://alembic.sqlalchemy.org/en/latest/) を直接使えます。
///
@@ -152,7 +152,7 @@ SQLModel は Alembic をラップしたマイグレーションユーティリ
```console
-$ fastapi dev main.py
+$ fastapi dev
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
```
@@ -337,7 +337,7 @@ SQLModel では継承を使って、あらゆるケースでフィールドの
```console
-$ fastapi dev main.py
+$ fastapi dev
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
```
@@ -352,6 +352,6 @@ $ fastapi dev main.py
## まとめ { #recap }
-
SQLModel を使って SQL データベースとやり取りし、データモデルとテーブルモデルでコードを簡潔にできます。
+[SQLModel](https://sqlmodel.tiangolo.com/) を使って SQL データベースとやり取りし、データモデルとテーブルモデルでコードを簡潔にできます。
-さらに多くを学ぶには SQLModel のドキュメントをご覧ください。
FastAPI と SQLModel を使うチュートリアル もあります。🚀
+さらに多くを学ぶには SQLModel のドキュメントをご覧ください。[FastAPI と SQLModel を使うチュートリアル](https://sqlmodel.tiangolo.com/tutorial/fastapi/) もあります。🚀
diff --git a/docs/ja/docs/tutorial/static-files.md b/docs/ja/docs/tutorial/static-files.md
index 52e28d6b05..81f281c2eb 100644
--- a/docs/ja/docs/tutorial/static-files.md
+++ b/docs/ja/docs/tutorial/static-files.md
@@ -23,7 +23,7 @@
これは、マウントされたアプリケーションが完全に独立しているため、`APIRouter` とは異なります。メインアプリケーションのOpenAPIとドキュメントには、マウントされたアプリケーションの内容などは含まれません。
-これについて詳しくは、[高度なユーザーガイド](../advanced/index.md){.internal-link target=_blank} をご覧ください。
+これについて詳しくは、[高度なユーザーガイド](../advanced/index.md) をご覧ください。
## 詳細 { #details }
@@ -37,4 +37,4 @@
## より詳しい情報 { #more-info }
-詳細とオプションについては、
Starletteの静的ファイルに関するドキュメントを確認してください。
+詳細とオプションについては、[Starletteの静的ファイルに関するドキュメント](https://www.starlette.dev/staticfiles/)を確認してください。
diff --git a/docs/ja/docs/tutorial/testing.md b/docs/ja/docs/tutorial/testing.md
index b09f1af723..0277d73b74 100644
--- a/docs/ja/docs/tutorial/testing.md
+++ b/docs/ja/docs/tutorial/testing.md
@@ -1,18 +1,18 @@
# テスト { #testing }
-
Starlette のおかげで、**FastAPI** アプリケーションのテストは簡単で楽しいものになっています。
+[Starlette](https://www.starlette.dev/testclient/) のおかげで、**FastAPI** アプリケーションのテストは簡単で楽しいものになっています。
-
HTTPX がベースで、さらにその設計は Requests をベースにしているため、とても馴染みがあり直感的です。
+[HTTPX](https://www.python-httpx.org) がベースで、さらにその設計は Requests をベースにしているため、とても馴染みがあり直感的です。
-これを使用すると、**FastAPI** と共に
pytest を直接利用できます。
+これを使用すると、**FastAPI** と共に [pytest](https://docs.pytest.org/) を直接利用できます。
## `TestClient` を使用 { #using-testclient }
-/// info | 情報
+/// info
-`TestClient` を使用するには、まず
`httpx` をインストールします。
+`TestClient` を使用するには、まず [`httpx`](https://www.python-httpx.org) をインストールします。
-[仮想環境](../virtual-environments.md){.internal-link target=_blank} を作成し、それを有効化してから、例えば以下のようにインストールしてください:
+[仮想環境](../virtual-environments.md) を作成し、それを有効化してから、例えば以下のようにインストールしてください:
```console
$ pip install httpx
@@ -32,7 +32,7 @@ $ pip install httpx
{* ../../docs_src/app_testing/tutorial001_py310.py hl[2,12,15:18] *}
-/// tip | 豆知識
+/// tip
テスト関数は `async def` ではなく、通常の `def` であることに注意してください。
@@ -50,9 +50,9 @@ $ pip install httpx
///
-/// tip | 豆知識
+/// tip
-FastAPIアプリケーションへのリクエストの送信とは別に、テストで `async` 関数 (非同期データベース関数など) を呼び出したい場合は、高度なチュートリアルの[Async Tests](../advanced/async-tests.md){.internal-link target=_blank} を参照してください。
+FastAPIアプリケーションへのリクエストの送信とは別に、テストで `async` 関数 (非同期データベース関数など) を呼び出したい場合は、高度なチュートリアルの[Async Tests](../advanced/async-tests.md) を参照してください。
///
@@ -64,7 +64,7 @@ FastAPIアプリケーションへのリクエストの送信とは別に、テ
### **FastAPI** アプリファイル { #fastapi-app-file }
-[Bigger Applications](bigger-applications.md){.internal-link target=_blank} で説明されている、次のようなファイル構成があるとします:
+[Bigger Applications](bigger-applications.md) で説明されている、次のようなファイル構成があるとします:
```
.
@@ -142,13 +142,13 @@ FastAPIアプリケーションへのリクエストの送信とは別に、テ
* *ヘッダー* を渡すには、`headers` パラメータに `dict` を渡します。
* *cookies* の場合、 `cookies` パラメータに `dict` です。
-(`httpx` または `TestClient` を使用して) バックエンドにデータを渡す方法の詳細は、
HTTPXのドキュメントを確認してください。
+(`httpx` または `TestClient` を使用して) バックエンドにデータを渡す方法の詳細は、[HTTPXのドキュメント](https://www.python-httpx.org)を確認してください。
-/// info | 情報
+/// info
`TestClient` は、Pydanticモデルではなく、JSONに変換できるデータを受け取ることに注意してください。
-テストにPydanticモデルがあり、テスト中にそのデータをアプリケーションに送信したい場合は、[JSON互換エンコーダ](encoder.md){.internal-link target=_blank} で説明されている `jsonable_encoder` が利用できます。
+テストにPydanticモデルがあり、テスト中にそのデータをアプリケーションに送信したい場合は、[JSON互換エンコーダ](encoder.md) で説明されている `jsonable_encoder` が利用できます。
///
@@ -156,7 +156,7 @@ FastAPIアプリケーションへのリクエストの送信とは別に、テ
その後、`pytest` をインストールするだけです。
-[仮想環境](../virtual-environments.md){.internal-link target=_blank} を作成し、それを有効化してから、例えば以下のようにインストールしてください:
+[仮想環境](../virtual-environments.md) を作成し、それを有効化してから、例えば以下のようにインストールしてください:
diff --git a/docs/ja/docs/virtual-environments.md b/docs/ja/docs/virtual-environments.md
index 94af6ddae2..21b7cd4727 100644
--- a/docs/ja/docs/virtual-environments.md
+++ b/docs/ja/docs/virtual-environments.md
@@ -21,7 +21,7 @@ Pythonプロジェクトの作業では、**仮想環境**(または類似の
/// info | 情報
このページでは、**仮想環境**の使用方法と、そのはたらきについて説明します。
-もし**すべてを管理するツール**(Pythonのインストールも含む)を導入する準備ができているなら、
uv をお試しください。
+もし**すべてを管理するツール**(Pythonのインストールも含む)を導入する準備ができているなら、[uv](https://github.com/astral-sh/uv) をお試しください。
///
@@ -83,7 +83,7 @@ $ python -m venv .venv
//// tab | `uv`
-もし
`uv` をインストール済みなら、仮想環境を作成するために `uv` を使うこともできます。
+もし [`uv`](https://github.com/astral-sh/uv) をインストール済みなら、仮想環境を作成するために `uv` を使うこともできます。
@@ -147,7 +147,7 @@ $ .venv\Scripts\Activate.ps1
//// tab | Windows Bash
-もしWindowsでBashを使用している場合 (
Git Bashなど):
+もしWindowsでBashを使用している場合 ([Git Bash](https://gitforwindows.org/)など):
@@ -213,7 +213,7 @@ C:\Users\user\code\awesome-project\.venv\Scripts\python
/// tip | 豆知識
-もし
`uv` を使用している場合は、 `pip` の代わりに `uv` を使ってインストールを行うため、 `pip` をアップグレードする必要はありません 😎。
+もし [`uv`](https://github.com/astral-sh/uv) を使用している場合は、 `pip` の代わりに `uv` を使ってインストールを行うため、 `pip` をアップグレードする必要はありません 😎。
///
@@ -265,7 +265,7 @@ $ python -m ensurepip --upgrade
/// tip | 豆知識
-もし
`uv` を使用して仮想環境を作成した場合、すでにこの作業は済んでいるので、この手順をスキップできます 😎。
+もし [`uv`](https://github.com/astral-sh/uv) を使用して仮想環境を作成した場合、すでにこの作業は済んでいるので、この手順をスキップできます 😎。
///
@@ -337,7 +337,7 @@ $ pip install "fastapi[standard]"
//// tab | `uv`
-もし
`uv` を使用できるなら:
+もし [`uv`](https://github.com/astral-sh/uv) を使用できるなら:
@@ -369,7 +369,7 @@ $ pip install -r requirements.txt
//// tab | `uv`
-もし
`uv` を使用できるなら:
+もし [`uv`](https://github.com/astral-sh/uv) を使用できるなら:
@@ -413,8 +413,8 @@ Hello World
設定例:
-*
VS Code
-*
PyCharm
+* [VS Code](https://code.visualstudio.com/docs/python/environments#_select-and-activate-an-environment)
+* [PyCharm](https://www.jetbrains.com/help/pycharm/creating-virtual-environment.html)
/// tip | 豆知識
@@ -452,7 +452,7 @@ $ deactivate
## なぜ仮想環境? { #why-virtual-environments }
-FastAPIを使った作業をするには、
Python のインストールが必要です。
+FastAPIを使った作業をするには、[Python](https://www.python.org/) のインストールが必要です。
それから、FastAPIや、使用したいその他の**パッケージ**を**インストール**する必要があります。
@@ -561,7 +561,7 @@ $ pip install "fastapi[standard]"
-FastAPIのコードを含む圧縮ファイルが、通常は
PyPI からダウンロードされます。
+FastAPIのコードを含む圧縮ファイルが、通常は [PyPI](https://pypi.org/project/fastapi/) からダウンロードされます。
また、FastAPIが依存する他のパッケージも**ダウンロード**されます。
@@ -624,7 +624,7 @@ $ .venv\Scripts\Activate.ps1
//// tab | Windows Bash
-あるいは、WindowsでBashを使用している場合 (
Git Bashなど):
+あるいは、WindowsでBashを使用している場合 ([Git Bash](https://gitforwindows.org/)など):
@@ -636,13 +636,13 @@ $ source .venv/Scripts/activate
////
-これによって、いくつかの [環境変数](environment-variables.md){.internal-link target=_blank} が作成・修正され、次に実行されるコマンドで使用できるようになります。
+これによって、いくつかの [環境変数](environment-variables.md) が作成・修正され、次に実行されるコマンドで使用できるようになります。
これらの環境変数のひとつに、 `PATH` 変数があります。
/// tip | 豆知識
-`PATH` 変数についての詳細は [環境変数](environment-variables.md#path-environment-variable){.internal-link target=_blank} を参照してください。
+`PATH` 変数についての詳細は [環境変数](environment-variables.md#path-environment-variable) を参照してください。
///
@@ -835,7 +835,7 @@ I solemnly swear 🐺
仮想環境、パッケージの依存関係(requirements)、プロジェクトの管理には、多くの**代替手段**があります。
-準備が整い、パッケージの依存関係、仮想環境など**プロジェクト全体の管理**ツールを使いたいと考えたら、
uv を試してみることをおすすめします。
+準備が整い、パッケージの依存関係、仮想環境など**プロジェクト全体の管理**ツールを使いたいと考えたら、[uv](https://github.com/astral-sh/uv) を試してみることをおすすめします。
`uv` では以下のような多くのことができます: