--- /dev/null
+# ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
+
+**FastAPI** ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½ΡΡ ΠΈ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ **<abbr title="also known as components, resources, providers, services, injectables">Dependency Injection</abbr>**.
+
+ΠΠ½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π»Π°ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π±ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ Π»ΡΠ±ΠΎΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π΄ΡΡΠ³ΠΈΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Ρ **FastAPI**.
+
+## Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ "Dependency Injection" (ΠΈΠ½ΡΠ΅ΠΊΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ)
+
+**"Dependency Injection"** Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π²Π°ΡΠ΅ΠΉ *ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΡΠΈ*) Π΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π²Π΅ΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: "Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ".
+
+Π ΠΏΠΎΡΠΎΠΌ ΡΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ **FastAPI**) ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅Ρ Π²ΡΡ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΡΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ (ΡΠ΄Π΅Π»Π°ΡΡ "ΠΈΠ½ΡΠ΅ΠΊΡΠΈΡ" Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ).
+
+ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ:
+
+* ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΎΠ±ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ (ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ½ΠΎΠ²Π° ΠΈ ΡΠ½ΠΎΠ²Π°).
+* ΠΠ±ΡΠ΅Π΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
.
+* ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π·Π°ΠΏΡΠΎΡΠ° ΡΠΎΠ»ΠΈ ΠΈ Ρ.ΠΏ.
+* Π ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
+
+ΠΡΡ ΡΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.
+
+## ΠΠ΅ΡΠ²ΡΠ΅ ΡΠ°Π³ΠΈ
+
+ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠ½ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΠΎΠΉ, ΡΡΠΎ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΡΡΠΈ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ.
+
+ΠΠΎ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΆΠ΅ Π²ΡΡ ΡΠ°ΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ° **Dependency Injection**.
+
+### Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ»ΠΈ "Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ"
+ΠΠ°Π²Π°ΠΉΡΠ΅ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° ΡΡΠΎΠΊΡΡΠΈΡΡΠ΅ΠΌΡΡ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ
.
+
+ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π²ΡΠ΅ ΡΠ΅ ΠΆΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΡΡΠΎ ΠΈ *ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΡΠΈ*:
+=== "Python 3.10+"
+
+ ```Python hl_lines="8-9"
+ {!> ../../../docs_src/dependencies/tutorial001_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="8-11"
+ {!> ../../../docs_src/dependencies/tutorial001_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="9-12"
+ {!> ../../../docs_src/dependencies/tutorial001_an.py!}
+ ```
+
+=== "Python 3.10+ non-Annotated"
+
+ !!! tip "ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°"
+ ΠΠ°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `Annotated` Π²Π΅ΡΡΠΈΡ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
+
+ ```Python hl_lines="6-7"
+ {!> ../../../docs_src/dependencies/tutorial001_py310.py!}
+ ```
+
+=== "Python 3.8+ non-Annotated"
+
+ !!! tip "ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°"
+
+ ΠΠ°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `Annotated` Π²Π΅ΡΡΠΈΡ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
+
+ ```Python hl_lines="8-11"
+ {!> ../../../docs_src/dependencies/tutorial001.py!}
+ ```
+
+**Π Π²ΡΡ.**
+
+**2 ΡΡΡΠΎΠΊΠΈ.**
+
+Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ½Π° ΡΠΎΠΉ ΠΆΠ΅ ΡΠΎΡΠΌΡ ΠΈ ΡΡΡΡΠΊΡΡΡΡ, ΡΡΠΎ ΠΈ Π²ΡΠ΅ Π²Π°ΡΠΈ *ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΡΠΈ*.
+
+ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΡΠΌΠ°ΡΡ ΠΎΠ± *ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΡΠΈ* ΠΊΠ°ΠΊ ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅Π· "Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°" (Π±Π΅Π· `@app.get("/some-path")`).
+
+Π ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π²ΡΡ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ.
+
+Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΡΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ:
+
+* ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ query-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ `q` Ρ ΡΠΈΠΏΠΎΠΌ `str`
+* ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ query-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ `skip` Ρ ΡΠΈΠΏΠΎΠΌ `int`, ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `0`
+* ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ query-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ `limit` Ρ ΡΠΈΠΏΠΎΠΌ `int`, ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ `100`
+
+Π Π² ΠΊΠΎΠ½ΡΠ΅ ΠΎΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ `dict`, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
+
+!!! ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
+
+ **FastAPI** Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π΄Π»Ρ `Annotated` (ΠΈ Π½Π°ΡΠ°Π» Π΅Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°ΡΡ) Π² Π²Π΅ΡΡΠΈΠΈ 0.95.0.
+
+ ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΠ°Ρ Π²Π΅ΡΡΠΈΡ, Π±ΡΠ΄ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `Annotated`.
+
+ Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ [ΠΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ FastAPI Π²Π΅ΡΡΠΈΡ](../../deployment/versions.md#upgrading-the-fastapi-versions){.internal-link target=_blank} Π΄ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ 0.95.1, ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `Annotated`.
+
+### Import `Depends`
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="3"
+ {!> ../../../docs_src/dependencies/tutorial001_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="3"
+ {!> ../../../docs_src/dependencies/tutorial001_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="3"
+ {!> ../../../docs_src/dependencies/tutorial001_an.py!}
+ ```
+
+=== "Python 3.10+ non-Annotated"
+
+ !!! tip "ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°"
+ ΠΠ°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `Annotated` Π²Π΅ΡΡΠΈΡ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
+
+ ```Python hl_lines="1"
+ {!> ../../../docs_src/dependencies/tutorial001_py310.py!}
+ ```
+
+=== "Python 3.8+ non-Annotated"
+
+ !!! tip "ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°"
+ ΠΠ°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `Annotated` Π²Π΅ΡΡΠΈΡ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
+
+ ```Python hl_lines="3"
+ {!> ../../../docs_src/dependencies/tutorial001.py!}
+ ```
+
+### ΠΠ±ΡΡΠ²ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π² "Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΌ"
+
+Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ `Body`, `Query` ΠΈ Ρ.Π΄. Ρ Π²Π°ΡΠ΅ΠΉ *ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΡΠΈ* Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ `Depends` Ρ Π½ΠΎΠ²ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="13 18"
+ {!> ../../../docs_src/dependencies/tutorial001_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="15 20"
+ {!> ../../../docs_src/dependencies/tutorial001_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="16 21"
+ {!> ../../../docs_src/dependencies/tutorial001_an.py!}
+ ```
+
+=== "Python 3.10+ non-Annotated"
+
+ !!! tip "ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°"
+ ΠΠ°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `Annotated` Π²Π΅ΡΡΠΈΡ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
+
+ ```Python hl_lines="11 16"
+ {!> ../../../docs_src/dependencies/tutorial001_py310.py!}
+ ```
+
+=== "Python 3.8+ non-Annotated"
+
+ !!! tip "ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°"
+ ΠΠ°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `Annotated` Π²Π΅ΡΡΠΈΡ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
+
+ ```Python hl_lines="15 20"
+ {!> ../../../docs_src/dependencies/tutorial001.py!}
+ ```
+
+`Depends` ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π°ΡΠ΅. ΠΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠ΅ Π² `Depends` ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡ
ΠΎΠΆ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ.
+
+ΠΡ **Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ Π΅Π³ΠΎ** Π½Π° ΠΌΠ΅ΡΡΠ΅ (Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ ΡΠΊΠΎΠ±ΠΎΡΠΊΠΈ Π² ΠΊΠΎΠ½ΡΠ΅: π *your_best_func()*π), ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠ΅ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² `Depends()`.
+
+Π ΠΏΠΎΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π±Π΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ *ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΡΠΈ*.
+
+!!! tip "ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°"
+ Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π΅ΡΠΈ, ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
+
+ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π½ΠΎΠ²ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡ, **FastAPI** ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ:
+
+* ΠΡΠ·ΠΎΠ²Π΅ Π²Π°ΡΠ΅ΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ("Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ") ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ.
+* ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈΠ· Π²Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
+* ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² Π²Π°ΡΠ΅ΠΉ *ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΡΠΈ*.
+
+```mermaid
+graph TB
+
+common_parameters(["common_parameters"])
+read_items["/items/"]
+read_users["/users/"]
+
+common_parameters --> read_items
+common_parameters --> read_users
+```
+
+Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΎΠ±ΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΠΈ **FastAPI** ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ Π΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π΅ Π΄Π»Ρ Π²Π°ΡΠΈΡ
*ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΡΡΡΠΌΠΈ*.
+
+!!! check "ΠΡΠΎΠ²Π΅ΡΠΊΠ°"
+ ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²Ρ Π½Π΅ ΡΠΎΠ·Π΄Π°ΡΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈ Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠ΅ Π΅Π³ΠΎ ΠΊΡΠ΄Π°-ΡΠΎ Π² **FastAPI** Π΄Π»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ, ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π² ΡΡΠΎΠΌ ΡΠΎΠ΄Π΅.
+
+ ΠΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠ΅ ΡΡΠΎ Π² `Depends`, ΠΈ **FastAPI** Π·Π½Π°Π΅Ρ, ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π΄Π°Π»ΡΡΠ΅.
+
+## ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌ Ρ `Annotated` Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ
+
+Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΅ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ **ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°**.
+
+ΠΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `common_parameters()` Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π²Π΅ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ ΡΠΈΠΏΠΎΠ² ΠΈ `Depends()`:
+
+```Python
+commons: Annotated[dict, Depends(common_parameters)]
+```
+
+ΠΠΎ ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ `Annotated`, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Ρ
ΡΠ°Π½ΠΈΡΡ `Annotated` Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΌΠ΅ΡΡΠ°Ρ
:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="12 16 21"
+ {!> ../../../docs_src/dependencies/tutorial001_02_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="14 18 23"
+ {!> ../../../docs_src/dependencies/tutorial001_02_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="15 19 24"
+ {!> ../../../docs_src/dependencies/tutorial001_02_an.py!}
+ ```
+
+!!! tip "ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°"
+ ΠΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ python ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ "type alias", ΡΡΠΎ Π½Π΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ **FastAPI**.
+
+ ΠΠΎ ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ **FastAPI** Π±Π°Π·ΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ°Ρ
Python, Π²ΠΊΠ»ΡΡΠ°Ρ `Annotated`, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΡΡΠΊ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅. π
+
+
+ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ, ΠΈ **Π»ΡΡΡΠ°Ρ ΡΠ°ΡΡΡ** Π² ΡΠΎΠΌ, ΡΡΠΎ **ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π°**. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Π°Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ **Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ**, **Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ** ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΈ ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ `mypy`.
+
+ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΠ΅ ΡΡΠΎ Π² **Π±ΠΎΠ»ΡΡΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ**, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ **ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ** ΡΠ½ΠΎΠ²Π° ΠΈ ΡΠ½ΠΎΠ²Π° Π²ΠΎ **ΠΌΠ½ΠΎΠ³ΠΈΡ
** ***ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ
ΠΏΡΡΠΈ***.
+
+## ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `async` ΠΈΠ»ΠΈ Π½Π΅ `async`
+
+ΠΠ»Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π²ΡΠ·Π²Π°Π½Π½ΡΡ
**FastAPI** (ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ Π²Π°ΡΠΈ *ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΡΠΈ*), ΡΠ΅ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΡΡΠΎ ΠΏΡΠΈΠ½ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²Π°ΡΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΉ.
+
+ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `async def` ΠΈΠ»ΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠ΅ `def`.
+
+ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ `async def` Π²Π½ΡΡΡΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠΉ `def` *ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΡΠΈ*, ΠΈΠ»ΠΈ `def` Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²Π½ΡΡΡΠΈ `async def` *ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΡΠΈ*, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
+
+ΠΡΠΎ Π²ΡΡ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ. **FastAPI** Π·Π½Π°Π΅Ρ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. π
+
+!!! note "ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ"
+ ΠΡΠ»ΠΈ Π²Π°ΠΌ ΡΡΠ° ΡΠ΅ΠΌΠ° Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΠ°, ΠΏΡΠΎΡΡΠΈΡΠ΅ [Async: *"In a hurry?"*](../../async.md){.internal-link target=_blank} ΡΠ°Π·Π΄Π΅Π» ΠΎ `async` ΠΈ `await` Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
+
+## ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ OpenAPI
+
+ΠΡΠ΅ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΡ ΠΎ Π·Π°ΠΏΡΠΎΡΠ°Ρ
, Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡΡ, ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π²Π°ΡΠΈΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (ΠΈ ΠΏΠΎΠ΄Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ) Π±ΡΠ΄ΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ OpenAPI-ΡΡ
Π΅ΠΌΡ.
+
+Π ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΡΠΈΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌ ΡΠΎΠΆΠ΅:
+
+<img src="/img/tutorial/dependencies/image01.png">
+
+## ΠΡΠΎΡΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
+
+ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠΎΡΠΎ, *ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΡΠΈ* ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΏΡΡΡ, ΠΈ ΡΠΎΠ³Π΄Π° **FastAPI** ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· Π·Π°ΠΏΡΠΎΡΠ°.
+
+ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Π²ΡΠ΅ (ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ) Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎ ΡΡ
ΠΎΠΆΠ΅ΠΌΡ ΡΡΠ΅Π½Π°ΡΠΈΡ.
+
+ΠΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΠΌΠ΅ΡΡΠ΅. ΠΡ
Π²ΡΠ·ΠΎΠ²Π΅Ρ Π²Π°Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, **FastAPI**).
+
+Π‘ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Dependency Injection, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠΎΠ±ΡΠΈΡΡ **FastAPI**, ΡΡΠΎ Π²Π°ΡΠ° *ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΡΠΈ* "Π·Π°Π²ΠΈΡΠΈΡ" ΠΎΡ ΡΠ΅Π³ΠΎ-ΡΠΎ Π΅ΡΡ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π²Π°ΡΠ΅ΠΉ *ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΡΠΈ*, ΠΈ **FastAPI** ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎΠ± ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠΈ ΠΈ ΠΈΠ½ΡΠ΅ΠΊΡΠΈΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.
+
+ΠΡΡΠ³ΠΈΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Ρ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡ
ΠΎΠΆΠ΅ΠΉ ΠΈΠ΄Π΅ΠΈ "dependency injection" ΡΠ²Π»ΡΡΡΡΡ:
+
+- ΡΠ΅ΡΡΡΡΠ½ΠΎΡΡΡ
+- Π΄ΠΎΡΡΠ°Π²ΠΊΠ°
+- ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΡΡΡ
+- ΠΈΠ½ΡΠ΅ΠΊΡΠΈΡ
+- ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΠΎΡΡΡ
+
+## **FastAPI** ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ
+
+ΠΠ½ΡΠ΅ΠΊΡΠΈΠΈ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ **Dependency Injection**. ΠΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, **Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ**, ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΉ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²Π°ΡΠ΅ΠΉ *ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΡΠΈ*.
+
+Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡΠΌ ΠΈ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Python ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ
Π² API ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΏΠ°ΡΡ ΡΡΡΠΎΠΊ.
+
+ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΡΠΎΠ³ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
Π³Π»Π°Π²Π°Ρ
ΠΎ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ
ΠΈ NoSQL Π±Π°Π·Π°Ρ
Π΄Π°Π½Π½ΡΡ
, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ Ρ.Π΄.
+
+## Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ **FastAPI**
+
+ΠΡΠΎΡΡΠΎΡΠ° Dependency Injection Π΄Π΅Π»Π°Π΅Ρ **FastAPI** ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌ Ρ:
+
+- Π²ΡΠ΅ΠΌΠΈ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
+- NoSQL Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
+- Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ
+- Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ API
+- ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ, Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ
+- ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ API
+- ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ
ΠΎΡΠ²Π΅ΡΠΎΠ²
+- ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
+
+## ΠΡΠΎΡΡΠΎ ΠΈ ΡΠΈΠ»ΡΠ½ΠΎ
+
+Π₯ΠΎΡΡ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Dependency Injection ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ° Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠ½Π° ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½Π°Ρ.
+
+ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΈ ΠΎΠ½ΠΈ ΡΠΆΠ΅ Π±ΡΠ΄ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π΄ΡΡΠ³ Π·Π° Π΄ΡΡΠ³ΠΎΠΌ.
+
+ΠΠΎΠ³Π΄Π° ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΎ, ΡΠΈΡΡΠ΅ΠΌΠ° **Dependency Injection** Π±Π΅ΡΠ΅Ρ Π½Π° ΡΠ΅Π±Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ Π²Π°Ρ (ΠΈ ΠΈΡ
ΠΏΠΎΠ΄Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ) ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ (ΠΈΠ½ΡΠ΅ΠΊΡΠΈΡΡΠ΅Ρ) ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Π΅.
+
+ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π²Π°Ρ Π΅ΡΡΡ 4 API-ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ° (*ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΡΠΈ*):
+
+- `/items/public/`
+- `/items/private/`
+- `/users/{user_id}/activate`
+- `/items/pro/`
+
+Π’ΠΎΠ³Π΄Π° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΡΠ°Π²Π° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈ ΠΏΠΎΠ΄Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
+
+```mermaid
+graph TB
+
+current_user(["current_user"])
+active_user(["active_user"])
+admin_user(["admin_user"])
+paying_user(["paying_user"])
+
+public["/items/public/"]
+private["/items/private/"]
+activate_user["/users/{user_id}/activate"]
+pro_items["/items/pro/"]
+
+current_user --> active_user
+active_user --> admin_user
+active_user --> paying_user
+
+current_user --> public
+active_user --> private
+admin_user --> activate_user
+paying_user --> pro_items
+```
+
+## ΠΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ΠΎ Ρ **OpenAPI**
+
+ΠΡΠ΅ ΡΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΎΠ±ΡΡΠ²Π»ΡΡ ΡΠ²ΠΎΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈ Ρ.Π΄. ΠΊ Π²Π°ΡΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌ *path*.
+
+**FastAPI** ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ Π² ΡΡ
Π΅ΠΌΡ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ API, ΡΡΠΎΠ±Ρ ΡΡΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π»ΠΎΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.