--- /dev/null
+# Middleware (ΠΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΡΠ»ΠΎΠΉ)
+
+ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΡΠ»ΠΎΠΉ (middleware) Π² **FastAPI** ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
+
+"Middleware" ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠΌ Π΄ΠΎ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ *ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΡΡΠΈ*.
+Π ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΎΡΠ²Π΅ΡΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄ Π΅Π³ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
+
+
+* ΠΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΠΉ **Π·Π°ΠΏΡΠΎΡ**.
+* ΠΠΎΠΆΠ΅Ρ ΡΡΠΎ-ΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΡΡΠΈΠΌ **Π·Π°ΠΏΡΠΎΡΠΎΠΌ** ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π»ΡΠ±ΠΎΠΉ Π½ΡΠΆΠ½ΡΠΉ ΠΊΠΎΠ΄.
+* ΠΠ°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ **Π·Π°ΠΏΡΠΎΡ** Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ (ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ *ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΡΡΠΈ*).
+* ΠΠΎΠ»ΡΡΠ°Π΅Ρ **ΠΎΡΠ²Π΅Ρ** (ΠΎΡ *ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΡΠΈ*).
+* ΠΠΎΠΆΠ΅Ρ ΡΡΠΎ-ΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΡΡΠΈΠΌ **ΠΎΡΠ²Π΅ΡΠΎΠΌ** ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π»ΡΠ±ΠΎΠΉ Π½ΡΠΆΠ½ΡΠΉ ΠΊΠΎΠ΄.
+* Π Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ **ΠΎΡΠ²Π΅Ρ**.
+
+/// note | Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ
+
+ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ `yield`, ΡΠΎ ΠΊΠΎΠ΄ Π²ΡΡ
ΠΎΠ΄Π° (ΠΊΠΎΠ΄ ΠΏΠΎΡΠ»Π΅ `yield`) Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ *ΠΏΠΎΡΠ»Π΅* middleware.
+
+ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΈΠΌΠ΅ΡΡΡΡ Π½Π΅ΠΊΠΈΠ΅ ΡΠΎΠ½ΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ (ΡΠΌ. Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ), ΡΠΎ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π·Π°ΠΏΡΡΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅ middleware.
+
+///
+
+## Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ middleware
+
+ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ middleware ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ `@app.middleware("http")`.
+
+Π€ΡΠ½ΠΊΡΠΈΡ middleware ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ:
+
+* `request` (ΠΎΠ±ΡΠ΅ΠΊΡ Π·Π°ΠΏΡΠΎΡΠ°).
+* Π€ΡΠ½ΠΊΡΠΈΡ `call_next`, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ `request` Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
+ * ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ `request` ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ *ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΡΠΈ*.
+ * ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠ²Π΅Ρ `response`, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ *ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΡΡΠΈ*.
+* Π’Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΈΠ΄ΠΎΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ `response`, ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π²Π΅ΡΠ½ΡΡΡ.
+
+{* ../../docs_src/middleware/tutorial001.py hl[8:9,11,14] *}
+
+/// tip | ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
+
+ΠΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers" class="external-link" target="_blank">ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡΠ° 'X-'</a>.
+
+ΠΡΠ»ΠΈ ΠΆΠ΅ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, ΡΠΎ Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΡ
Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ CORS ([CORS (Cross-Origin Resource Sharing)](cors.md){.internal-link target=_blank}), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ `expose_headers`, ΡΠΌ. Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ <a href="https://www.starlette.io/middleware/#corsmiddleware" class="external-link" target="_blank">Starlette's CORS docs</a>.
+
+///
+
+/// note | Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ
+
+ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `from starlette.requests import Request`.
+
+**FastAPI** ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°ΠΊΠΎΠΉ Π΄ΠΎΡΡΡΠΏ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠΎ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΡΡΠΎ `Request` ΠΈΠ· Starlette.
+
+///
+
+### ΠΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅ `response`
+
+ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ `request` Π΄ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΅Π³ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ *ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΡΠΈ*.
+
+Π ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ `response`, Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ Π΅Π³ΠΎ Π²Π΅ΡΠ½ΡΡΠ΅.
+
+ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ `X-Process-Time`, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π²ΡΠ΅ΠΌΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ° ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΎΡΠ²Π΅ΡΠ°:
+
+{* ../../docs_src/middleware/tutorial001.py hl[10,12:13] *}
+
+/// tip | ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
+
+ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ <a href="https://docs.python.org/3/library/time.html#time.perf_counter" class="external-link" target="_blank">`time.perf_counter()`</a> Π²ΠΌΠ΅ΡΡΠΎ `time.time()` Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠΎΡΠ½ΠΎΡΡΠΈ Π½Π°ΡΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ². π€
+
+///
+
+## ΠΡΡΠ³ΠΈΠ΅ middleware
+
+Π Π΄ΡΡΠ³ΠΈΡ
middleware Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ [Advanced User Guide: Advanced Middleware](../advanced/middleware.md){.internal-link target=_blank}.
+
+Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ, ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ <abbr title="Cross-Origin Resource Sharing">CORS</abbr> Ρ ΠΏΠΎΠΌΠΎΡΡΡ middleware.