]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🌐 Add Russian translation for `docs/ru/docs/tutorial/middleware.md` (#13412)
authoralv2017 <v.alishauskaite@gmail.com>
Fri, 28 Feb 2025 17:09:29 +0000 (19:09 +0200)
committerGitHub <noreply@github.com>
Fri, 28 Feb 2025 17:09:29 +0000 (18:09 +0100)
docs/ru/docs/tutorial/middleware.md [new file with mode: 0644]

diff --git a/docs/ru/docs/tutorial/middleware.md b/docs/ru/docs/tutorial/middleware.md
new file mode 100644 (file)
index 0000000..845e881
--- /dev/null
@@ -0,0 +1,74 @@
+# 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.