]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🌐 Update translations for ru (update-outdated) (#15758)
authorSebastiΓ‘n RamΓ­rez <tiangolo@gmail.com>
Mon, 15 Jun 2026 18:36:31 +0000 (20:36 +0200)
committerGitHub <noreply@github.com>
Mon, 15 Jun 2026 18:36:31 +0000 (20:36 +0200)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Yurii Motov <109919500+YuriiMotov@users.noreply.github.com>
54 files changed:
docs/ru/docs/advanced/additional-responses.md
docs/ru/docs/advanced/advanced-dependencies.md
docs/ru/docs/advanced/custom-response.md
docs/ru/docs/advanced/dataclasses.md
docs/ru/docs/advanced/events.md
docs/ru/docs/advanced/generate-clients.md
docs/ru/docs/advanced/openapi-callbacks.md
docs/ru/docs/advanced/openapi-webhooks.md
docs/ru/docs/advanced/path-operation-advanced-configuration.md
docs/ru/docs/advanced/response-directly.md
docs/ru/docs/advanced/security/oauth2-scopes.md
docs/ru/docs/advanced/stream-data.md
docs/ru/docs/advanced/strict-content-type.md
docs/ru/docs/advanced/websockets.md
docs/ru/docs/advanced/wsgi.md
docs/ru/docs/deployment/docker.md
docs/ru/docs/deployment/fastapicloud.md
docs/ru/docs/deployment/manually.md
docs/ru/docs/deployment/server-workers.md
docs/ru/docs/how-to/extending-openapi.md
docs/ru/docs/how-to/separate-openapi-schemas.md
docs/ru/docs/index.md
docs/ru/docs/tutorial/bigger-applications.md
docs/ru/docs/tutorial/body-multiple-params.md
docs/ru/docs/tutorial/body-nested-models.md
docs/ru/docs/tutorial/body.md
docs/ru/docs/tutorial/cookie-param-models.md
docs/ru/docs/tutorial/cookie-params.md
docs/ru/docs/tutorial/debugging.md
docs/ru/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
docs/ru/docs/tutorial/dependencies/dependencies-with-yield.md
docs/ru/docs/tutorial/dependencies/index.md
docs/ru/docs/tutorial/dependencies/sub-dependencies.md
docs/ru/docs/tutorial/first-steps.md
docs/ru/docs/tutorial/metadata.md
docs/ru/docs/tutorial/path-operation-configuration.md
docs/ru/docs/tutorial/path-params-numeric-validations.md
docs/ru/docs/tutorial/path-params.md
docs/ru/docs/tutorial/query-params-str-validations.md
docs/ru/docs/tutorial/query-params.md
docs/ru/docs/tutorial/request-files.md
docs/ru/docs/tutorial/request-form-models.md
docs/ru/docs/tutorial/request-forms-and-files.md
docs/ru/docs/tutorial/request-forms.md
docs/ru/docs/tutorial/response-model.md
docs/ru/docs/tutorial/response-status-code.md
docs/ru/docs/tutorial/schema-extra-example.md
docs/ru/docs/tutorial/security/first-steps.md
docs/ru/docs/tutorial/security/get-current-user.md
docs/ru/docs/tutorial/security/oauth2-jwt.md
docs/ru/docs/tutorial/security/simple-oauth2.md
docs/ru/docs/tutorial/server-sent-events.md
docs/ru/docs/tutorial/stream-json-lines.md
docs/ru/docs/tutorial/testing.md

index f7e8d9dec07b25cad62ec28974ca7ca20958d649..ef9d3f2238c40c35f57c6d6e873b5b7bf166c8f1 100644 (file)
@@ -34,7 +34,7 @@
 
 ///
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 ΠšΠ»ΡŽΡ‡ `model` Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся Ρ‡Π°ΡΡ‚ΡŒΡŽ OpenAPI.
 
 
 ///
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π•сли Π²Ρ‹ ΡΠ²Π½ΠΎ Π½Π΅ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ³ΠΎ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ `responses`, FastAPI Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠ»Π°ΡΡ ΠΎΡ‚Π²Π΅Ρ‚Π° (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ `application/json`).
 
index fe37a79c1f08b3545c6f2f969d6d7de364a71378..fb6cb7ca8b475d6f769b756adbef50adc2f1bbf1 100644 (file)
@@ -98,7 +98,7 @@ checker(q="somequery")
 
 Π’ Π²Π΅Ρ€ΡΠΈΠΈ 0.118.0 ΡΡ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΎ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΏΠΎΡΠ»Π΅ `yield` Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ся ΠΏΠΎΡΠ»Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π°.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 ΠšΠ°ΠΊ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½ΠΈΠΆΠ΅, ΡΡ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎ Π²Π΅Ρ€ΡΠΈΠΈ 0.106.0, Π½ΠΎ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΠΌΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΠΈΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡΠΌΠΈ ΠΊΡ€Π°Π΅Π²Ρ‹Ρ… ΡΠ»ΡƒΡ‡Π°Π΅Π².
 
index fdfe2c5498828dc9c3b1d47bd47bfd189bbee5a6..695506223e4dd32d782cf2b972c0789cd837c09f 100644 (file)
@@ -41,7 +41,7 @@
 
 {* ../../docs_src/custom_response/tutorial002_py310.py hl[2,7] *}
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `response_class` Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся Π΄Π»Ρ ΡƒΠΊΠ°Π·Π°Π½ΠΈΡ Β«Ρ‚ΠΈΠΏΠ° ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ³ΠΎΒ» ΠΎΡ‚Π²Π΅Ρ‚Π°.
 
@@ -65,7 +65,7 @@
 
 ///
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π Π°Π·ΡƒΠΌΠ΅Π΅Ρ‚ся, Ρ„актичСский Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ `Content-Type`, ΡΡ‚атус-ΠΊΠΎΠ΄ ΠΈ Ρ‚.Π΄. Π²ΠΎΠ·ΡŒΠΌΡƒΡ‚ся ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° `Response`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π²Π΅Ρ€Π½ΡƒΠ»ΠΈ.
 
index f9f8689b049485fec58ae7e046545213c1babfe9..aa927cef19390c66e9c7345cd3b9fcdf86f99493 100644 (file)
@@ -18,7 +18,7 @@ FastAPI ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ ΠΏΠΎΠ²Π΅Ρ€Ρ… **Pydantic**, ΠΈ Ρ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π» Π²
 
 Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ Pydantic-модСлями. Π˜ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ ΡΡ‚ΠΎ Π΄ΠΎΡΡ‚игаСтся Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Pydantic.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ dataclasses Π½Π΅ ΡƒΠΌΠ΅ΡŽΡ‚ Π²ΡΠ΅Π³ΠΎ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΌΠ΅ΡŽΡ‚ Pydantic-ΠΌΠΎΠ΄Π΅Π»ΠΈ.
 
index 464bba93e97a763f3be26c07628bdcb9842d9e3a..69ebe4ffc33e04bd2895010c344fee165eee8ba9 100644 (file)
@@ -120,7 +120,7 @@ async with lifespan(app):
 
 Π—Π΄Π΅ΡΡŒ Ρ„ункция-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΡΠΎΠ±Ρ‹Ρ‚ия `shutdown` Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ ΡΡ‚Ρ€ΠΎΠΊΡƒ Ρ‚Скста `"Application shutdown"` Π² Ρ„Π°ΠΉΠ» `log.txt`.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ `open()` ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `mode="a"` ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅Β» (append), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡΡ‚Ρ€ΠΎΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π² ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°, Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ³ΠΎ.
 
@@ -152,7 +152,7 @@ async with lifespan(app):
 
 ΠŸΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ, Π² ASGI-тСхничСской ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΡΡ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ [ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Lifespan](https://asgi.readthedocs.io/en/latest/specs/lifespan.html), ΠΈ ΠΎΠ½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΡΠΎΠ±Ρ‹Ρ‚ия `startup` ΠΈ `shutdown`.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΡ€ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ `lifespan` Π² Starlette Π² [Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Starlette ΠΏΠΎ Lifespan](https://www.starlette.dev/lifespan/).
 
index dfedc5dc07bd7bbcedcd9bd6daef851cec801f13..f05454d9c481fd3f1fc8cdc9e93a4ee27b930fce 100644 (file)
@@ -31,7 +31,6 @@ FastAPI Π°Π²Ρ‚оматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ
 ΠΠ°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ:
 
 * [Stainless](https://www.stainless.com/?utm_source=fastapi&utm_medium=referral)
-* [liblab](https://developers.liblab.com/tutorials/sdk-for-fastapi?utm_source=fastapi)
 
 ΠΠ΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΡΡ‚ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ open source ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ Ρ‚Π°Ρ€ΠΈΡ„Ρ‹, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π±Π΅Π· Ρ„инансовых Π·Π°Ρ‚Ρ€Π°Ρ‚. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ‡Π΅ΡΠΊΠΈΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ SDK Π΄ΠΎΡΡ‚ΡƒΠΏΠ½Ρ‹ ΠΈ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½. πŸ€“
 
@@ -83,7 +82,7 @@ npx @hey-api/openapi-ts -i http://localhost:8000/openapi.json -o src/client
 
 ///
 
-Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΠΈ ΠΏΡ€ΡΠΌΠΎ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Π΄Π»Ρ ΠΎΡ‚правляСмых Π΄Π°Π½Π½Ρ‹Ρ…:
+Ð\92Γ‘\8b ΓΒΏΓΒΎΓΒ»Γ‘\83Γ‘\87иÑ\82С ΓΒΎΓ‘\88ибки ΓΒΏΓ‘\80Γ‘\8fмо ΓΒ² Γ‘\80СдакÑ\82оÑ\80С ΓΒΊΓΒΎΓΒ΄ΓΒ° ΓΒ΄ΓΒ»Γ‘\8f ΓΒΎΓ‘\82пÑ\80авлÑ\8fСмÑ\8bΓ‘\85 ΓΒ΄ΓΒ°ΓΒ½ΓΒ½Γ‘\8bΓ‘\85:
 
 <img src="/img/tutorial/generate-clients/image04.png">
 
@@ -186,7 +185,7 @@ FastAPI ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ **ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID** Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ *ΠΎ
 npx @hey-api/openapi-ts -i ./openapi.json -o src/client
 ```
 
-ПослС Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Ρƒ Π²Π°Ρ Π±ΡƒΠ΄ΡƒΡ‚ **чистыС ΠΈΠΌΠ΅Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²**, ΡΠΎ Π²ΡΠ΅ΠΌ **Π°Π²Ρ‚ΠΎΠ·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ**, **ошибками ΠΏΡ€ΡΠΌΠΎ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅** ΠΈ Ρ‚.Π΄.:
+ПослС Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Ρƒ Π²Π°Ρ Π±ΡƒΠ΄ΡƒΡ‚ **чистыС ΠΈΠΌΠ΅Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²**, ΡΠΎ Π²ΡΠ΅ΠΌ **Π°Π²Ρ‚ΠΎΠ·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ**, **ошибками ΠΏΡ€ΡΠΌΠΎ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΊΠΎΠ΄Π°** ΠΈ Ρ‚.Π΄.:
 
 <img src="/img/tutorial/generate-clients/image08.png">
 
@@ -198,7 +197,7 @@ npx @hey-api/openapi-ts -i ./openapi.json -o src/client
 * Π”Π°Π½Π½Ρ‹Ρ… Π·Π°ΠΏΡ€ΠΎΡΠ° β€” Π² Ρ‚Π΅Π»Π΅ Π·Π°ΠΏΡ€ΠΎΡΠ°, query‑парамСтрах ΠΈ Ρ‚.Π΄.
 * Π”Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚Π°.
 
-Π£ Π²Π°Ρ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ **ошибки ΠΏΡ€ΡΠΌΠΎ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅** Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ.
+Π£ Π²Π°Ρ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ **ошибки ΠΏΡ€ΡΠΌΠΎ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΊΠΎΠ΄Π°** Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ.
 
 Π˜ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄ Π±ΡΠΊΠ΅Π½Π΄Π° ΠΈ **ΠΏΠ΅Ρ€Π΅Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅** Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄, Π² Π½Ρ‘ΠΌ ΠΏΠΎΡΠ²ΡΡ‚ся Π½ΠΎΠ²Ρ‹Π΅ *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ* ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΡΡ‚Π°Ρ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹, Π° Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡ‚разятся Π² ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. πŸ€“
 
index 3d791de2c680abd93ea208d7988c2d21c6dc0986..c9cb73d1836603e87dab9c126bba05bba5a7125a 100644 (file)
@@ -167,13 +167,13 @@ https://www.external.org/events/invoices/2expen51ve
 
 Πš ΡΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ Ρƒ Π²Π°Ρ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ* ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° (Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ *внСшний Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ* Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ *внСшнСм API*) Π² ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².
 
-Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `callbacks` Π² *Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ Π²Π°ΡˆΠ΅Π³ΠΎ API*, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ `.routes` (это, ΠΏΠΎ ΡΡƒΡ‚ΠΈ, ΠΏΡ€ΠΎΡΡ‚ΠΎ `list` ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ²/*ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡƒΡ‚ΠΈ*) ΠΈΠ· ΡΡ‚ΠΎΠ³ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²:
+Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `callbacks` Π² *Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ Π²Π°ΡˆΠ΅Π³ΠΎ API*, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ `.routes` ΠΈΠ· ΡΡ‚ΠΎΠ³ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²:
 
 {* ../../docs_src/openapi_callbacks/tutorial001_py310.py hl[33] *}
 
 /// tip | Π‘ΠΎΠ²Π΅Ρ‚
 
-ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚Π΅ Π½Π΅ ΡΠ°ΠΌ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€ (`invoices_callback_router`) Π² `callback=`, Π° Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ `.routes`, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ `invoices_callback_router.routes`.
+ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚Π΅ Π½Π΅ ΡΠ°ΠΌ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€ (`invoices_callback_router`) Π² `callback=`, Π° Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ `.routes`, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ `invoices_callback_router.routes`. FastAPI Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ Π΄Π»Ρ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ OpenAPI Π΄Π»Ρ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².
 
 ///
 
index 9b1988ff31a52a46aeb50c761145aefae0643ddc..cd4d23e7e83bd84c97affe4c311f38e01c328b46 100644 (file)
@@ -22,7 +22,7 @@
 
 Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ Π²Π°ΡˆΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Слям Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈΡ… API Π΄Π»Ρ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π²Π°ΡˆΠΈΡ… Π²Π΅Π±Ρ…ΡƒΠΊ-запросов; Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ΠΈ Π΄Π°ΠΆΠ΅ ΡΠΌΠΎΠ³ΡƒΡ‚ Π°Π²Ρ‚оматичСски ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° ΡΠ²ΠΎΠ΅Π³ΠΎ API.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π’Π΅Π±Ρ…ΡƒΠΊΠΈ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½Ρ‹ Π² OpenAPI 3.1.0 ΠΈ Π²Ρ‹ΡˆΠ΅, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ся Π² FastAPI `0.99.0` ΠΈ Π½ΠΎΠ²Π΅Π΅.
 
@@ -36,7 +36,7 @@
 
 ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π²Π°ΠΌΠΈ Π²Π΅Π±Ρ…ΡƒΠΊΠΈ ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ Π² ΡΡ…Π΅ΠΌΡƒ **OpenAPI** ΠΈ Π² Π°Π²Ρ‚оматичСский **интСрфСйс Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ**.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 ΠžΠ±ΡŠΠ΅ΠΊΡ‚ `app.webhooks` Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ β€” ΡΡ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ `APIRouter`, Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ.
 
index fe2996362b7da811cccf957cbf2ef52c537425db..e3bd78d50755c73a68b51fae6ac5bd043d639da8 100644 (file)
 
 ### Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ *Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΡƒΡ‚ΠΈ* ΠΊΠ°ΠΊ operationId { #using-the-path-operation-function-name-as-the-operationid }
 
-Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Π°ΡˆΠΈΡ… API Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ `operationId`, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΈΠ· Π½ΠΈΡ… ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ `operation_id` ΠΊΠ°ΠΆΠ΄ΠΎΠΉ *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ* Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΡ… `APIRoute.name`.
+Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Π°ΡˆΠΈΡ… API Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ `operationId`, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ `generate_unique_id_function` Π² `FastAPI`.
 
-Ð\94СлаÑ\82Γ‘\8c Γ‘\8dΓ‘\82о Γ‘\81лСдÑ\83СÑ\82 ΓΒΏΓΒΎΓ‘\81лС ΓΒ΄ΓΒΎΓΒ±ΓΒ°ΓΒ²ΓΒ»ΓΒ΅ΓΒ½ΓΒΈΓ‘\8f ΓΒ²Γ‘\81СÑ\85 *опСÑ\80аÑ\86ий ΓΒΏΓ‘\83Γ‘\82и*.
+ЭÑ\82а Γ‘\84Γ‘\83нкÑ\86иÑ\8f ΓΒΏΓΒΎΓΒ»Γ‘\83Γ‘\87аСÑ\82 ΓΒΊΓΒ°ΓΒΆΓΒ΄Γ‘\8bй `APIRoute` ΓΒΈ ΓΒ²ΓΒΎΓΒ·ΓΒ²Γ‘\80аÑ\89аСÑ\82 `operationId`, ΓΒΊΓΒΎΓ‘\82оÑ\80Γ‘\8bй ΓΒ½Γ‘\83Тно ΓΒΈΓ‘\81полÑ\8cзоваÑ\82Γ‘\8c ΓΒ΄ΓΒ»Γ‘\8f Γ‘\8dΓ‘\82ой ΓΒΎΓΒΏΓΒ΅Γ‘\80аÑ\86ии ΓΒΏΓ‘\83Γ‘\82и.
 
-{* ../../docs_src/path_operation_advanced_configuration/tutorial002_py310.py hl[2, 12:21, 24] *}
-
-/// tip | Π‘ΠΎΠ²Π΅Ρ‚
-
-Если Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ `app.openapi()` Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ `operationId` Π΄ΠΎ ΡΡ‚ΠΎΠ³ΠΎ.
-
-///
+{* ../../docs_src/path_operation_advanced_configuration/tutorial002_py310.py hl[2,5:6,9] *}
 
 /// warning | ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅
 
index fcb8d533db5470db4994187a93b088c8d845127a..c9a229018e7b53a76012582016e78b24e9ffd50e 100644 (file)
@@ -18,7 +18,7 @@
 
 Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ `Response` ΠΈΠ»ΠΈ Π»ΡŽΠ±ΠΎΠΉ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 `JSONResponse` ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠΌ `Response`.
 
index 944baeeeb6f2b11d056bab1b9fc7d895f3c20b33..a0b7a185c3847117143307d0c96bd06b02ed51d6 100644 (file)
@@ -46,7 +46,7 @@ OAuth2 ΡΠΎ scopes β€” ΡΡ‚ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·Ρƒ
 - `instagram_basic` ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся Facebook / Instagram.
 - `https://www.googleapis.com/auth/drive` ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся Google.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π’ OAuth2 Β«scopeΒ» β€” ΡΡ‚ΠΎ ΠΏΡ€ΠΎΡΡ‚ΠΎ ΡΡ‚Ρ€ΠΎΠΊΠ°, ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‰Π°Ρ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.
 
@@ -126,7 +126,7 @@ OAuth2 ΡΠΎ scopes β€” ΡΡ‚ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·Ρƒ
 
 {* ../../docs_src/security/tutorial005_an_py310.py hl[5,141,172] *}
 
-/// info | Π’СхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ
+/// note | Π’СхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ
 
 `Security` Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠΌ `Depends` ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅.
 
index 4c373db1adf48e0485efa2b82c8baa1bf8dfb9f7..9ae6890a5b3c8f0f362b0abd6deb460821a6cd4c 100644 (file)
@@ -4,7 +4,7 @@
 
 ΠΠΎ Π΅ΡΠ»ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ Ρ‡ΠΈΡΡ‚Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΡΡ‚Ρ€ΠΎΠΊΠΈ, Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡΡ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² FastAPI 0.134.0.
 
@@ -90,7 +90,7 @@ FastAPI Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‡Π°Π½ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π² `S
 
 Π˜ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΡΠ»ΡƒΡ‡Π°ΡΡ… Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ (которая ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» ΡΠΎΠ±Ρ‹Ρ‚ΠΈΠΉ), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ Π΄ΠΈΡΠΊΠ° ΠΈΠ»ΠΈ ΠΈΠ· ΡΠ΅Ρ‚ΠΈ.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 ΠŸΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ `io.BytesIO` ΡƒΠΆΠ΅ Π½Π°Ρ…одится Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ, ΠΏΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚.
 
index 1a0cbbc31df7b83a4a05d99950e384636fcafde9..1d732421cd8776384d6461fd21bf0dc789a87592 100644 (file)
@@ -81,7 +81,7 @@ http://localhost:8000/v1/agents/multivac
 
 Π‘ ΡΡ‚ΠΎΠΉ Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠΎΠΉ Π·Π°ΠΏΡ€ΠΎΡΡ‹ Π±Π΅Π· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° `Content-Type` Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Π΅Π»ΠΎ Π·Π°ΠΏΡ€ΠΎΡΠ°, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ ΠΊΠ°ΠΊ JSON β€” ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Π² Π±ΠΎΠ»Π΅Π΅ ΡΡ‚Π°Ρ€Ρ‹Ρ… Π²Π΅Ρ€ΡΠΈΡΡ… FastAPI.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠ° Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² FastAPI 0.132.0.
 
index abfd789a48508adc6eb727c0bf08545818857a95..0f69f57b3d193fd752b132d5ccb0810745a6d865 100644 (file)
@@ -111,7 +111,7 @@ $ fastapi dev
 
 {* ../../docs_src/websockets_/tutorial002_an_py310.py hl[68:69,82] *}
 
-/// info | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π’ Π²Π΅Π±-сокСтС Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ `HTTPException` Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΌΡ‹ΡΠ»Π°. Π’мСсто ΡΡ‚ΠΎΠ³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `WebSocketException`.
 
index 3ed85d0e9526e56921aad7641c6bfb1c858bebc2..d62133c7365fb04928f8cd420d0bd1f3518bbbaa 100644 (file)
@@ -6,7 +6,7 @@
 
 ## Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ `WSGIMiddleware` { #using-wsgimiddleware }
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π”ля ΡΡ‚ΠΎΠ³ΠΎ Ρ‚рСбуСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ `a2wsgi`, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `pip install a2wsgi`.
 
index 3b16d7798bdaa498e4539103aa4f36bac64c7206..50147750eaa25507fb34659f9cceb4ea9df8cc65 100644 (file)
@@ -132,7 +132,7 @@ Successfully installed fastapi pydantic
 
 </div>
 
-/// info | Π˜Π½Ρ„ормация
+/// note | Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
 
 Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚Π΅ΠΉ.
 
@@ -556,7 +556,7 @@ CMD ["fastapi", "run", "app/main.py", "--port", "80", "--workers", "4"]
 
 Π•сли Ρƒ Π²Π°Ρ **нСсколько ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²**, ΠΈ, Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π·Π°ΠΏΡƒΡΠΊΠ°Π΅Ρ‚ **ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡ†Π΅ΡΡ** (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠ»Π°ΡΡ‚Π΅Ρ€Π΅ **Kubernetes**), Ρ‚ΠΎ Π²Ρ‹, ΡΠΊΠΎΡ€Π΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ **ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€**, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ **ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡˆΠ°Π³ΠΈ** Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ ΠΈ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ **Π΄ΠΎ** Π·Π°ΠΏΡƒΡΠΊΠ° Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²-Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ².
 
-/// info | Π˜Π½Ρ„ормация
+/// note | Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
 
 Π•сли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Kubernetes, ΡΡ‚ΠΎ, Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ [Init Container](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/).
 
index 95db3387f2a26665ae4a05588525cf155a4c848f..fa3160519a38a6496f16822e3063eb8a46e182dd 100644 (file)
@@ -1,26 +1,6 @@
 # FastAPI Cloud { #fastapi-cloud }
 
-Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΡΠ²ΠΎΡ‘ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ FastAPI Π² [FastAPI Cloud](https://fastapicloud.com) ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ ΡΠΏΠΈΡΠΊΡƒ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡ‚ΠΎΠ³ΠΎ. πŸš€
-
-## Π’Ρ…ΠΎΠ΄ { #login }
-
-Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ Π²Π°Ρ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ **FastAPI Cloud** (ΠΌΡ‹ ΠΏΡ€ΠΈΠ³Π»Π°ΡΠΈΠ»ΠΈ Π²Π°Ρ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ πŸ˜‰).
-
-Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π²Ρ…ΠΎΠ΄:
-
-<div class="termy">
-
-```console
-$ fastapi login
-
-You are logged in to FastAPI Cloud πŸš€
-```
-
-</div>
-
-## Π”Π΅ΠΏΠ»ΠΎΠΉ { #deploy }
-
-Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π·Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
+Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΡΠ²ΠΎΡ‘ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ FastAPI Π² [FastAPI Cloud](https://fastapicloud.com) Π²ΡΠ΅Π³ΠΎ **ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ**. πŸš€
 
 <div class="termy">
 
@@ -36,6 +16,8 @@ Deploying to FastAPI Cloud...
 
 </div>
 
+CLI Π°Π²Ρ‚оматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ Π²Π°ΡˆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ FastAPI ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½Ρ‘Ρ‚ Π΅Π³ΠΎ Π² ΠΎΠ±Π»Π°ΠΊΠ΅. Π•сли Π²Ρ‹ Π½Π΅ Π²ΠΎΡˆΠ»ΠΈ Π² Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚, ΠΎΡ‚кроСтся Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π΄Π»Ρ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ° Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.
+
 Π’ΠΎΡ‚ ΠΈ Π²ΡΡ‘! Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΡΠ²ΠΎΡ‘ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΡ‚ΠΎΠΌΡƒ URL. βœ¨
 
 ## Πž FastAPI Cloud { #about-fastapi-cloud }
index 3169f3189381ec731bdec73b26400e8e5893bca8..db5581ae58017bb7916d49f223b4c9a677ef52d3 100644 (file)
@@ -46,7 +46,7 @@ $ <font color="#4E9A06">fastapi</font> run <u style="text-decoration-style:solid
 
 Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ³Π»ΡƒΠ±ΠΈΠΌΡΡ Π² Π΄Π΅Ρ‚Π°Π»ΠΈ.
 
-FastAPI ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ Π΄Π»Ρ ΠΏΠΎΡΡ‚роСния Python‑вСб‑фрСймворков ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€ΠΎΠ² ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ <abbr title="Asynchronous Server Gateway Interface β€“ ΠΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½Ρ‹ΠΉ ΡˆΠ»ΡŽΠ·ΠΎΠ²Ρ‹ΠΉ ΠΈΠ½Ρ‚СрфСйс ΡΠ΅Ρ€Π²Π΅Ρ€Π°">ASGI</abbr>. FastAPI β€” ASGI-вСб‑фрСймворк.
+FastAPI ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ Π΄Π»Ρ ΠΏΠΎΡΡ‚роСния Python‑вСб‑фрСймворков ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€ΠΎΠ² ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ <abbr title="Asynchronous Server Gateway Interface - ΠΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½Ρ‹ΠΉ ΡˆΠ»ΡŽΠ·ΠΎΠ²Ρ‹ΠΉ ΠΈΠ½Ρ‚СрфСйс ΡΠ΅Ρ€Π²Π΅Ρ€Π°">ASGI</abbr>. FastAPI β€” ASGI-вСб‑фрСймворк.
 
 Π“Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ **FastAPI** (ΠΈΠ»ΠΈ Π»ΡŽΠ±ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ASGI‑прилоТСниС) Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Π΅, β€” ΡΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ASGI‑сСрвСра, Ρ‚акая ΠΊΠ°ΠΊ **Uvicorn**; ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ `fastapi`.
 
@@ -56,7 +56,6 @@ FastAPI ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ Π΄Π»Ρ ΠΏΠΎΡΡ‚роСния Python
 * [Hypercorn](https://hypercorn.readthedocs.io/): ASGI‑сСрвСр, ΡΡ€Π΅Π΄ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΡ‹ΠΉ Ρ HTTP/2 ΠΈ Trio.
 * [Daphne](https://github.com/django/daphne): ASGI‑сСрвСр, ΡΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π΄Π»Ρ Django Channels.
 * [Granian](https://github.com/emmett-framework/granian): HTTP‑сСрвСр Π½Π° Rust Π΄Π»Ρ Python‑прилоТСний.
-* [NGINX Unit](https://unit.nginx.org/howto/fastapi/): NGINX Unit β€” Π»Ρ‘гкая ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΡΡ€Π΅Π΄Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π΅Π±β€‘ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
 
 ## Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΊΠ°ΠΊ ΠΌΠ°ΡˆΠΈΠ½Π° ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° { #server-machine-and-server-program }
 
index 2caf79f7d84c4f34c2796b6889b57eda2d32319a..8d4bd33ef01c6904579af629f3814c0653994bb7 100644 (file)
@@ -17,7 +17,7 @@
 
 Π—Π΄Π΅ΡΡŒ Ρ ΠΏΠΎΠΊΠ°ΠΆΡƒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ **Uvicorn** Ρ **Π²ΠΎΡ€ΠΊΠ΅Ρ€-процСссами** Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ `fastapi` ΠΈΠ»ΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ `uvicorn`.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π•сли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Docker ΠΈΠ»ΠΈ Kubernetes, Ρ Ρ€Π°ΡΡΠΊΠ°ΠΆΡƒ ΠΎΠ± ΡΡ‚ΠΎΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅: [FastAPI Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… β€” Docker](docker.md).
 
index c1e369f5e5ec82890ef01a0f7fd845a3ee4f684e..4a0a91b1c83385228b75275980c7c23eda55996a 100644 (file)
 * `openapi_version`: Π’Срсия ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ OpenAPI. ΠŸΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ: `3.1.0`.
 * `summary`: ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ API.
 * `description`: ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²Π°ΡˆΠ΅Π³ΠΎ API; ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Markdown ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.
-* `routes`: Π‘писок ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² β€” ΡΡ‚ΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚рированная *опСрация ΠΏΡƒΡ‚ΠΈ*. Π‘Срутся ΠΈΠ· `app.routes`.
+* `routes`: Π‘писок ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² β€” ΡΡ‚ΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚рированная *опСрация ΠΏΡƒΡ‚ΠΈ*. Π‘Срутся ΠΈΠ· `app.routes`. FastAPI ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈΡ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ*, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π΅ ΠΈΠ· ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Ρ… Ρ€ΠΎΡƒΡ‚Π΅Ρ€ΠΎΠ².
 
-/// info | Π˜Π½Ρ„ормация
+/// tip | Π’СхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ
 
-ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `summary` Π΄ΠΎΡΡ‚ΡƒΠΏΠ΅Π½ Π² OpenAPI 3.1.0 ΠΈ Π²Ρ‹ΡˆΠ΅, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ся FastAPI Π²Π΅Ρ€ΡΠΈΠΈ 0.99.0 ΠΈ Π²Ρ‹ΡˆΠ΅.
+`app.routes` β€” ΡΡ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ². ΠžΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Ρ‹ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ FastAPI ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Ρ… Ρ€ΠΎΡƒΡ‚Π΅Ρ€ΠΎΠ², Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ `APIRoute`.
+
+Π’Ρ‹ Π²ΡΡ‘ Ρ€Π°Π²Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ `app.routes` Π² `get_openapi()`. FastAPI ΠΎΠ±ΠΎΠΉΠ΄Ρ‘Ρ‚ ΡΡ‚ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ„актичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ.
+
+///
+
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
+
+ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `summary` Π΄ΠΎΡΡ‚ΡƒΠΏΠ΅Π½ Π² OpenAPI 3.1.0 ΠΈ Π²Ρ‹ΡˆΠ΅, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ся FastAPI 0.99.0 ΠΈ Π²Ρ‹ΡˆΠ΅.
 
 ///
 
index 8f6c83e7ec270bc9a1b40e0e480aa9328159a2ce..3e0830891e929bba121192f13d5d1778624031cb 100644 (file)
@@ -85,7 +85,7 @@
 
 Π’ Ρ‚Π°ΠΊΠΎΠΌ ΡΠ»ΡƒΡ‡Π°Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡΡ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² **FastAPI** Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° `separate_input_output_schemas=False`.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° `separate_input_output_schemas` ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡŒ Π² FastAPI `0.102.0`. πŸ€“
 
index 015b9769ef7584584bd2a2593606a926e47409bc..1b6f3d40a2162d7444232d200fec750294099a88 100644 (file)
@@ -492,9 +492,7 @@ item: Item
 
 ### Π Π°Π·Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) { #deploy-your-app-optional }
 
-ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΡΠ²ΠΎΡ‘ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ FastAPI Π² [FastAPI Cloud](https://fastapicloud.com), ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ ΡΠΏΠΈΡΠΊΡƒ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡ‚ΠΎΠ³ΠΎ. πŸš€
-
-Если Ρƒ Π²Π°Ρ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ **FastAPI Cloud** (ΠΌΡ‹ ΠΏΡ€ΠΈΠ³Π»Π°ΡΠΈΠ»ΠΈ Π²Π°Ρ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ πŸ˜‰), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²Π°ΡˆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.
+ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΡΠ²ΠΎΡ‘ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ FastAPI Π² [FastAPI Cloud](https://fastapicloud.com) ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. πŸš€
 
 <div class="termy">
 
@@ -510,6 +508,8 @@ Deploying to FastAPI Cloud...
 
 </div>
 
+CLI Π°Π²Ρ‚оматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ Π²Π°ΡˆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ FastAPI ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½Ρ‘Ρ‚ Π΅Π³ΠΎ Π² ΠΎΠ±Π»Π°ΠΊΠ΅. Π•сли Π²Ρ‹ Π½Π΅ Π²ΠΎΡˆΠ»ΠΈ Π² ΡΠΈΡΡ‚Π΅ΠΌΡƒ, ΠΎΡ‚кроСтся Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π΄Π»Ρ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ° Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.
+
 Π’ΠΎΡ‚ ΠΈ Π²ΡΡ‘! Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π²Π°ΡˆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΡ‚ΠΎΠΉ ΡΡΡ‹Π»ΠΊΠ΅. βœ¨
 
 #### Πž FastAPI Cloud { #about-fastapi-cloud }
index 453851d341ed1310ec1cd15d967ff677d3c429c6..2c7784f22ae188e453769b9923e25b5d3ed101fb 100644 (file)
@@ -396,9 +396,9 @@ from .routers.users import router
 
 /// note | Π’СхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ
 
-ЀактичСски, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ½ ΡΠΎΠ·Π΄Π°ΡΡ‚ *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΡƒΡ‚ΠΈ* Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ*, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½ΠΎΠΉ Π² `APIRouter`.
+FastAPI ΡΠΎΡ…раняСт ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ `APIRouter` ΠΈ Π΅Π³ΠΎ `APIRoute` Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ся Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
 
-Вак Γ‘\87Γ‘\82о ΓΒΏΓΒΎΓΒ΄ ΓΒΊΓΒ°ΓΒΏΓΒΎΓ‘\82ом ΓΒ²Γ‘\81Γ‘\91 ΓΒ±Γ‘\83дСÑ\82 Γ‘\80абоÑ\82аÑ\82Γ‘\8c Γ‘\82ак, ΓΒΊΓΒ°ΓΒΊ ΓΒ±Γ‘\83дÑ\82о ΓΒ²Γ‘\81Γ‘\91 ΓΒ±Γ‘\8bло ΓΒΎΓΒ΄ΓΒ½ΓΒΈΓΒΌ ΓΒΏΓ‘\80илоТСниСм.
+ЭÑ\82о ΓΒΎΓΒ·ΓΒ½ΓΒ°Γ‘\87аСÑ\82, Γ‘\87Γ‘\82о ΓΒΏΓΒΎΓΒ»Γ‘\8cзоваÑ\82СлÑ\8cΓ‘\81киС ΓΒΏΓΒΎΓΒ΄ΓΒΊΓΒ»ΓΒ°Γ‘\81Γ‘\81Γ‘\8b `APIRouter` ΓΒΈ `APIRoute` ΓΒΏΓΒΎ-пÑ\80СТнСмÑ\83 Γ‘\83Γ‘\87аÑ\81Γ‘\82вÑ\83Γ‘\8eΓ‘\82 ΓΒΏΓΒΎΓ‘\81лС ΓΒΏΓΒΎΓΒ΄ΓΒΊΓΒ»Γ‘\8eΓ‘\87СниÑ\8f ΓΒΌΓΒ°Γ‘\80Γ‘\88Γ‘\80Γ‘\83Γ‘\82изаÑ\82оÑ\80а.
 
 ///
 
@@ -406,7 +406,7 @@ from .routers.users import router
 
 ΠŸΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.
 
-Π­Ρ‚ΠΎ Π·Π°ΠΉΠΌΡ‘Ρ‚ ΠΌΠΈΠΊΡ€ΠΎΡΠ΅ΠΊΡƒΠ½Π΄Ρ‹ ΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΡΡ‚Π°Ρ€Ρ‚Π΅.
+Π­Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ Π»Ρ‘Π³ΠΊΠΈΠΌ ΠΈ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ‚ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… Ρ€Π°ΡΡ…ΠΎΠ΄ΠΎΠ² Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π·Π°ΠΏΡ€ΠΎΡ.
 
 Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΡΡ‚ΠΎ Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ‚ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. βš‘
 
@@ -459,9 +459,9 @@ from .routers.users import router
 
 `APIRouter` Π½Π΅ Β«ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡΒ», ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
 
-Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ* Π² OpenAPI-схСму ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΈΠ½Ρ‚СрфСйсы.
+Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ* Π² ΡΡ…Π΅ΠΌΡƒ OpenAPI ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΈΠ½Ρ‚СрфСйсы.
 
-Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΡΡ‚ΠΎ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈ Β«ΡΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΒ» Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ, *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ* Β«ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ся» (ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ), Π° Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.
+FastAPI ΡΠΎΡ…раняСт ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€Π΅Ρ„иксы ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ², Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ, Ρ‚Π΅Π³ΠΈ, ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π·Π°ΠΏΡ€ΠΎΡΠΎΠ² ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ OpenAPI.
 
 ///
 
@@ -524,7 +524,7 @@ $ fastapi dev
 
 Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, Π½ΠΎ ΠΎΠ½ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° ΡΠ»ΡƒΡ‡Π°ΠΉ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ся.
 
-## ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ `APIRouter` Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ `APIRouter` { #include-an-apirouter-in-another }
+## ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ `APIRouter` Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ  `APIRouter` { #include-an-apirouter-in-another }
 
 Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ `APIRouter` ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ `FastAPI`, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ `APIRouter` ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ `APIRouter`, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ:
 
@@ -532,4 +532,16 @@ $ fastapi dev
 router.include_router(other_router)
 ```
 
-Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡ‚ΠΎ Π΄ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ `router` ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ `FastAPI`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ* ΠΈΠ· `other_router` Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹.
+Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΡ‚ΠΎ Π΄ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ `router` ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ `FastAPI`. FastAPI Π²ΡΡ‘ Ρ€Π°Π²Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ* ΠΈΠ· `other_router` Π² ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ OpenAPI.
+
+Π’ΠΎ ΠΆΠ΅ ΠΎΡ‚носится ΠΊ *опСрациям ΠΏΡƒΡ‚ΠΈ*, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ·ΠΆΠ΅ Π² ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹. ΠžΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄Π½Ρ‹ Ρ‡Π΅Ρ€Π΅Π· Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½Π΅Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.
+
+/// warning | Π’СхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ
+
+Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΏΡ€ΡΠΌΠΎΠΉ ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ `router.routes` ΠΏΠΎΡΠ»Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. FastAPI Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΊΠ°ΠΊ Β«ΠΆΠΈΠ²ΠΎΠ΅Β», ΠΏΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΈ Π΅Π³ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ OpenAPI.
+
+Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ API, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡƒΡ‚ΠΈ ΠΈ `.include_router()`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹.
+
+Π‘Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ `router.routes` Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² ΠΈ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Π΅ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹, ΠΈ ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΏΠ»ΠΎΡΠΊΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡƒΡ‚ΠΈ.
+
+///
index ddd9c6fdd9bb5524f9103b97b653d491635f04e3..cd9c56012a74af65705f615e040d20e740e659f4 100644 (file)
@@ -108,7 +108,7 @@ q: str | None = None
 
 {* ../../docs_src/body_multiple_params/tutorial004_an_py310.py hl[28] *}
 
-/// info | Π˜Π½Ρ„ормация
+/// note | Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
 
 `Body` Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΡΠ΅ Ρ‚Π΅ ΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ Ρƒ `Query`, `Path` ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΠ·ΠΆΠ΅.
 
@@ -123,7 +123,7 @@ q: str | None = None
 ΠΠΎ Π΅ΡΠ»ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΎΠΆΠΈΠ΄Π°Π» JSON Ρ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ `item` Ρ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΡ‹ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ, Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΡΡ‚ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… body-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `embed` Ρƒ Ρ‚ΠΈΠΏΠ° `Body`:
 
 ```Python
-item: Item = Body(embed=True)
+item: Annotated[Item, Body(embed=True)]
 ```
 
 Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:
index fab025dbc96987b077996c8a8fc5ba60c1873253..d4baf8230b6349fcafbc5ebcd03e7e0679c6c83c 100644 (file)
@@ -16,7 +16,8 @@
 
 ### ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ `list` Ρ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Ρ‚ΠΈΠΏΠ° { #declare-a-list-with-a-type-parameter }
 
-Для ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠΎΠ², Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚ΠΈΠΏΠ° (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹), Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ `list`, `dict`, `tuple`, ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ(ΠΈΠ΅) Ρ‚ΠΈΠΏ(Ρ‹) ΠΊΠ°ΠΊ Β«ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚ΠΈΠΏΠ°Β», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΡΠΊΠΎΠ±ΠΊΠΈ: `[` ΠΈ `]`
+Для ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠΎΠ², Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚ΠΈΠΏΠ° (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹), Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ `list`, `dict`, `tuple`,
+ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ(ΠΈΠ΅) Ρ‚ΠΈΠΏ(Ρ‹) ΠΊΠ°ΠΊ Β«ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚ΠΈΠΏΠ°Β», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΡΠΊΠΎΠ±ΠΊΠΈ: `[` ΠΈ `]`
 
 ```Python
 my_list: list[str]
@@ -135,7 +136,7 @@ my_list: list[str]
 }
 ```
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ ΠΊΠ»ΡŽΡ‡Π° `images` Π΅ΡΡ‚ΡŒ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.
 
@@ -147,7 +148,7 @@ my_list: list[str]
 
 {* ../../docs_src/body_nested_models/tutorial007_py310.py hl[7,12,18,21,25] *}
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° `Offer` Π΅ΡΡ‚ΡŒ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² `Item`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² `Image`
 
index 8a67c8f51e0bd8d77a9dbf49991b9735f985baa2..7b3ab22d3abecbf0de0fb285787485d9544c09bd 100644 (file)
@@ -8,7 +8,7 @@
 
 Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ‚Π΅Π»ΠΎ **запроса**, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ [Pydantic](https://docs.pydantic.dev/), ΡΠΎ Π²ΡΠ΅ΠΉ ΠΈΡ… ΠΌΠΎΡ‰ΡŒΡŽ ΠΈ ΠΏΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°ΠΌΠΈ.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
 
 Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²: `POST` (Ρ‡Π°Ρ‰Π΅ Π²ΡΠ΅Π³ΠΎ), `PUT`, `DELETE` ΠΈΠ»ΠΈ `PATCH`.
 
index 9b34cf030063887cda6f3d089c3049e8e3121549..2b96814335c10de19d54f0d05ad696a58d7bcc12 100644 (file)
@@ -32,7 +32,7 @@
 <img src="/img/tutorial/cookie-param-models/image01.png">
 </div>
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
 
 Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ **Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ cookies** ΠΎΡΠΎΠ±Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ, ΠΎΠ½ΠΈ **Π½Π΅** ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ **JavaScript** Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΡΡ‚ΡƒΠΏ ΠΊ Π½ΠΈΠΌ.
 
index 8dad3873e4f57a39062a3247383de241bfa2e7a9..f801c4ac429a71e4f60b46a143f9759a6ad1b5a4 100644 (file)
 
 ///
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π”ля ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡ cookies, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Cookie`, ΠΈΠ½Π°Ρ‡Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°ΠΏΡ€ΠΎΡΠ°.
 
 ///
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ **Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ cookies** ΠΎΡΠΎΠ±Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈ Β«Π·Π° ΠΊΡƒΠ»ΠΈΡΠ°ΠΌΠΈΒ», ΠΎΠ½ΠΈ **Π½Π΅** ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ **JavaScript** ΠΏΡ€ΠΎΡΡ‚ΠΎ Ρ‚Π°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊ Π½ΠΈΠΌ Π΄ΠΎΡΡ‚ΡƒΠΏ.
 
index 330055be4dac2d9a30869e6964c48de3cf69a5d4..deb92f1b99cc20b728bce6ff0eadd49cd7815dc6 100644 (file)
@@ -72,7 +72,7 @@ from myapp import app
 
 Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π”ля ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ Ρ [ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Python](https://docs.python.org/3/library/__main__.html).
 
index b4b7ce6314b7a405813caad5b0ca2f1afddef508..2193343e6a17a84c928421c288eb75acd64206cf 100644 (file)
@@ -28,7 +28,7 @@
 
 ///
 
-/// info | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π’ ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π²Ρ‹Π΄ΡƒΠΌΠ°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ `X-Key` ΠΈ `X-Token`.
 
index 04c2c2da42e77e3f724dcd5a7e1126174a7fc348..61ab8f44dfd19ecacf11521f21908c13e743d7ad 100644 (file)
@@ -170,7 +170,7 @@ participant tasks as Background tasks
     end
 ```
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ **ΠΎΠ΄ΠΈΠ½ ΠΎΡ‚Π²Π΅Ρ‚**. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅ ΠΈΠ»ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ*.
 
@@ -219,7 +219,7 @@ participant operation as Π€ΡƒΠ½ΠΊΡ†ΠΈΡ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΡƒΡ‚ΠΈ
     Note over dep_req: Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π΄ΠΎ yield
     dep_req ->> dep_func: ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
     Note over dep_func: Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π΄ΠΎ yield
-    dep_func ->> operation: Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΡƒΡ‚ΠΈ
+    dep_func ->> operation: Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΡƒΡ‚ΠΈ
     operation ->> dep_func: Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΡƒΡ‚ΠΈ
     Note over dep_func: Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΠΎΡΠ»Π΅ yield
     Note over dep_func: βœ… Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚Π°
index 4aed035541810e29e99b745ec7eb9aea8c3821d6..6efd023e24d766912805b5c0378aa1ed6e615fff 100644 (file)
@@ -51,7 +51,7 @@
 
 Π Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΡΡ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ `dict`, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΠΈΠΉ ΡΡ‚ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 FastAPI Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ `Annotated` (ΠΈ Π½Π°Ρ‡Π°Π» Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅) Π² Π²Π΅Ρ€ΡΠΈΠΈ 0.95.0.
 
@@ -106,7 +106,7 @@ common_parameters --> read_users
 
 Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π° **FastAPI** ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ится ΠΎ Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅ Π΄Π»Ρ Π²Π°ΡˆΠΈΡ… *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡƒΡ‚ΠΈ*.
 
-/// check | ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°
+/// tip | ΠŸΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°
 
 ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»Π°ΡΡ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ Π² **FastAPI**, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Β«Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΒ» Π΅Π³ΠΎ ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅.
 
index 3c71defd89c436e0133eeca4f0bb168557853437..b36adf486e44efbcc60c2b48a28552df98a14219 100644 (file)
@@ -6,9 +6,9 @@
 
 **FastAPI** ΡΠ°ΠΌ Π·Π°ΠΉΠΌΡ‘тся ΠΈΡ… ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ.
 
-## ΠŸΠ΅Ρ€Π²Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ { #first-dependency-dependable }
+## ΠŸΠ΅Ρ€Π²Π°Ρ Β«Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΒ» { #first-dependency-dependable }
 
-МоТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:
+МоТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Β«Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΒ» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:
 
 {* ../../docs_src/dependencies/tutorial005_an_py310.py hl[8:9] *}
 
@@ -35,7 +35,7 @@
 
 {* ../../docs_src/dependencies/tutorial005_an_py310.py hl[23] *}
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π² *Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ* - `query_or_cookie_extractor`.
 
index 7216d4cb799dd39a169ba3ac53df78c9b5ff65e3..ce743b3696e6340e84adeb4b5e7d10ba365135be 100644 (file)
@@ -180,7 +180,7 @@ entrypoint = "backend.main:app"
 from backend.main import app
 ```
 
-### `fastapi dev` Ρ ΠΏΡƒΡ‚Ρ‘ΠΌ { #fastapi-dev-with-path }
+### `fastapi dev` Ρ ΠΏΡƒΡ‚Ρ‘ΠΌ ΠΈΠ»ΠΈ Ρ ΠΎΠΏΡ†ΠΈΠ΅ΠΉ CLI `--entrypoint` { #fastapi-dev-with-path-or-with-entrypoint-cli-option }
 
 Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ `fastapi dev`, ΠΈ ΠΎΠ½Π° ΠΏΠΎΠΏΡ‹Ρ‚аСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ FastAPI Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ:
 
@@ -188,29 +188,19 @@ from backend.main import app
 $ fastapi dev main.py
 ```
 
-Но Π² ΡΡ‚ΠΎΠΌ ΡΠ»ΡƒΡ‡Π°Π΅ Π²Π°ΠΌ ΠΏΡ€ΠΈΠ΄Ρ‘тся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ `fastapi`.
-
-ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π΅Π³ΠΎ Π½Π΅ Π½Π°ΠΉΡ‚ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ [Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ VS Code](../editor-support.md) ΠΈΠ»ΠΈ [FastAPI Cloud](https://fastapicloud.com), ΠΏΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `entrypoint` Π² `pyproject.toml`.
-
-### Π Π°Π·Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ) { #deploy-your-app-optional }
-
-ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΡΠ²ΠΎΡ‘ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ FastAPI Π² [FastAPI Cloud](https://fastapicloud.com), ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΈ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΡΠΏΠΈΡΠΊΡƒ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡ‚ΠΎΠ³ΠΎ. πŸš€
-
-Если Ρƒ Π²Π°Ρ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ **FastAPI Cloud** (ΠΌΡ‹ ΠΏΡ€ΠΈΠ³Π»Π°ΡΠΈΠ»ΠΈ Π²Π°Ρ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ πŸ˜‰), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.
-
-ΠŸΠ΅Ρ€Π΅Π΄ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²ΠΎΡˆΠ»ΠΈ Π² ΡΠΈΡΡ‚Π΅ΠΌΡƒ:
-
-<div class="termy">
+Или Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ `--entrypoint` ΠΊΠΎΠΌΠ°Π½Π΄Π΅ `fastapi dev`:
 
 ```console
-$ fastapi login
-
-You are logged in to FastAPI Cloud πŸš€
+$ fastapi dev --entrypoint main:app
 ```
 
-</div>
+Но Π² ΡΡ‚ΠΎΠΌ ΡΠ»ΡƒΡ‡Π°Π΅ Π²Π°ΠΌ ΠΏΡ€ΠΈΠ΄Ρ‘тся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ/entrypoint ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ `fastapi`.
+
+ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π΅Π³ΠΎ Π½Π΅ Π½Π°ΠΉΡ‚ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ [Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ VS Code](../editor-support.md) ΠΈΠ»ΠΈ [FastAPI Cloud](https://fastapicloud.com), ΠΏΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `entrypoint` Π² `pyproject.toml`.
 
-Π—Π°Ρ‚Π΅ΠΌ Ρ€Π°Π·Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:
+### Π Π°Π·Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ) { #deploy-your-app-optional }
+
+ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΡΠ²ΠΎΡ‘ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ FastAPI Π² [FastAPI Cloud](https://fastapicloud.com) ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. πŸš€
 
 <div class="termy">
 
@@ -226,6 +216,8 @@ Deploying to FastAPI Cloud...
 
 </div>
 
+CLI Π°Π²Ρ‚оматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ Π²Π°ΡˆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ FastAPI ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½Ρ‘Ρ‚ Π΅Π³ΠΎ Π² ΠΎΠ±Π»Π°ΠΊΠ΅. Π•сли Π²Ρ‹ Π½Π΅ Π²ΠΎΡˆΠ»ΠΈ Π² ΡΠΈΡΡ‚Π΅ΠΌΡƒ, ΠΎΡ‚кроСтся Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π΄Π»Ρ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ° Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.
+
 Π“ΠΎΡ‚ΠΎΠ²ΠΎ! Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΡΠ²ΠΎΡ‘ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΡ‚ΠΎΠΌΡƒ URL. βœ¨
 
 ## Π Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΏΠΎΡΡ‚Π°ΠΏΠ½ΠΎ { #recap-step-by-step }
@@ -270,7 +262,7 @@ https://example.com/items/foo
 /items/foo
 ```
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Β«ΠŸΡƒΡ‚ΡŒΒ» Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Π°ΡΡ‚ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Β«ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ‚Β» ΠΈΠ»ΠΈ Β«ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Β».
 
@@ -322,7 +314,7 @@ https://example.com/items/foo
 * ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ `/`
 * Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ <dfn title="ΠΌΠ΅Ρ‚ΠΎΠ΄ HTTP GET"><code>get</code> ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ</dfn>
 
-/// info | Π˜Π½Ρ„ормация ΠΎ `@decorator`
+/// note | Π˜Π½Ρ„ормация ΠΎ `@decorator`
 
 Π‘интаксис `@something` Π² Python Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ся Β«Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Β».
 
index 261cc43f500a396b7b54af2fa9d87ff8812ba12a..b1335f668452cec141409ee1272b7e1d475209ff 100644 (file)
@@ -74,7 +74,7 @@
 
 {* ../../docs_src/metadata/tutorial004_py310.py hl[21,26] *}
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π£Π·Π½Π°ΠΉΡ‚Π΅ Π±ΠΎΠ»ΡŒΡˆΠ΅ ΠΎ Ρ‚Π΅Π³Π°Ρ… Π² [ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ](path-operation-configuration.md#tags).
 
index 965f2a1ba2f2ffcb55929fcbdf3d4e4629a25556..c1264d9dd330ce32e787def8c2747b8074c31497 100644 (file)
 
 {* ../../docs_src/path_operation_configuration/tutorial005_py310.py hl[18] *}
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ `response_description` ΠΎΡ‚носится ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΊ ΠΎΡ‚Π²Π΅Ρ‚Ρƒ, Π° `description` ΠΎΡ‚носится ΠΊ *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ* Π² Ρ†Π΅Π»ΠΎΠΌ.
 
 ///
 
-/// check | ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°
+/// tip | Π‘ΠΎΠ²Π΅Ρ‚
 
 OpenAPI ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ* Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Π°.
 
index 34eeb80cb2f6401d31ab92710ab794d8669e982a..dbbc025f10f6a5bfde832afd7184cf6eee7c8eac 100644 (file)
@@ -8,7 +8,7 @@
 
 {* ../../docs_src/path_params_numeric_validations/tutorial001_an_py310.py hl[1,3] *}
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° `Annotated` Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π² FastAPI Π½Π°Ρ‡ΠΈΠ½Π°Ρ Ρ Π²Π΅Ρ€ΡΠΈΠΈ 0.95.0 (ΠΈ Ρ ΡΡ‚ΠΎΠΉ Π²Π΅Ρ€ΡΠΈΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄).
 
@@ -131,7 +131,7 @@ Python Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ `*`, Π½ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π·
 * `lt`: ΠΌΠ΅Π½ΡŒΡˆΠ΅ (`l`ess `t`han)
 * `le`: ΠΌΠ΅Π½ΡŒΡˆΠ΅ ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ (`l`ess than or `e`qual)
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 `Query`, `Path` ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘Ρ‚Π΅ ΠΏΠΎΠ·ΠΆΠ΅, ΡΠ²Π»ΡΡŽΡ‚ся Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ° `Param`.
 
index 79343a1588ed5ec1f9a07eb8fadc070ffc8b0bbd..cfc96189c88a03194d64cabbaec792dbfe8b0c29 100644 (file)
@@ -20,7 +20,7 @@
 
 Π—Π΄Π΅ΡΡŒ, `item_id` ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ Ρ‚ΠΈΠΏΠΎΠΌ `int`.
 
-/// check | Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
+/// tip | ΠŸΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°
 
 Π­Ρ‚ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΎΡˆΠΈΠ±ΠΎΠΊ, Π°Π²Ρ‚ΠΎΠ·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ‚.ΠΏ.).
 
@@ -34,7 +34,7 @@
 {"item_id":3}
 ```
 
-/// check | Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
+/// tip | ΠŸΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°
 
 ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ `3`, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° (ΠΈ Π²Π΅Ρ€Π½ΡƒΠ»Π°) Ρ„ункция. Π­Ρ‚ΠΎ Ρ†Π΅Π»ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹ΠΉ Python `int`, Π° Π½Π΅ ΡΡ‚Ρ€ΠΎΠΊΠ° `"3"`.
 
@@ -66,7 +66,7 @@
 
 Π’Π° ΠΆΠ΅ ΠΎΡˆΠΈΠ±ΠΊΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚, Π΅ΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡ‚ΠΎ `int` ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ `float`, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: [http://127.0.0.1:8000/items/4.2](http://127.0.0.1:8000/items/4.2)
 
-/// check | Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
+/// tip | ΠŸΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°
 
 **FastAPI** ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²ΡΡ‘ Ρ‚Π΅ ΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠΎΠ².
 
@@ -82,7 +82,7 @@
 
 <img src="/img/tutorial/path-params/image01.png">
 
-/// check | Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
+/// tip | ΠŸΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°
 
 Π•Ρ‰Ρ‘ Ρ€Π°Π·, ΠΏΡ€ΠΎΡΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠΎΠ², **FastAPI** ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ (с ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Swagger UI).
 
index 08a5e11a54777f7a5b8bc8eea8fb67f2aa932444..7af7ccfa0ec7a6e1499c2b9ab945f44cba633a21 100644 (file)
@@ -29,7 +29,7 @@ FastAPI ΠΏΠΎΠΉΠΌΡ‘Ρ‚, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ `q` Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, 
 
 {* ../../docs_src/query_params_str_validations/tutorial002_an_py310.py hl[1,3] *}
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° `Annotated` (ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ) ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡŒ Π² FastAPI Π²Π΅Ρ€ΡΠΈΠΈ 0.95.0.
 
@@ -381,7 +381,7 @@ http://127.0.0.1:8000/items/?item-query=foobaritems
 
 {* ../../docs_src/query_params_str_validations/tutorial015_an_py310.py hl[5,16:19,24] *}
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π­Ρ‚ΠΎ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎ Π² Pydantic Π²Π΅Ρ€ΡΠΈΠΈ 2 ΠΈ Π²Ρ‹ΡˆΠ΅. πŸ˜Ž
 
index 99f2a98aeb9fde949563a99394b1f7bc1f1c980e..524b539456bf481773f27c75bd109557bbf07520 100644 (file)
@@ -65,7 +65,7 @@ http://127.0.0.1:8000/items/?skip=20
 
 Π’ ΡΡ‚ΠΎΠΌ ΡΠ»ΡƒΡ‡Π°Π΅, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€  `q` Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ `None` ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.
 
-/// check | Π’Π°ΠΆΠ½ΠΎ
+/// tip | ΠŸΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°
 
 Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ **FastAPI** Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎ ΡƒΠΌΡ‘Π½ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `item_id` ΡΠ²Π»ΡΠ΅Ρ‚ся path-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, Π° `q` Π½Π΅Ρ‚, ΠΏΠΎΡΡ‚ΠΎΠΌΡƒ, ΡΡ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π·Π°ΠΏΡ€ΠΎΡΠ°.
 
index e8500adbac784a80962006903c6dfde1c30c4bd0..29a7f5ec1c025284e0685702dc1870d972d370a0 100644 (file)
@@ -2,7 +2,7 @@
 
 Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ»Π°ΡΡ `File`, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹.
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΡΠ½Π°Ρ‡Π°Π»Π° ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ [`python-multipart`](https://github.com/Kludex/python-multipart).
 
@@ -28,7 +28,7 @@ $ pip install python-multipart
 
 {* ../../docs_src/request_files/tutorial001_an_py310.py hl[9] *}
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 `File` - ΡΡ‚ΠΎ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ся Π½Π΅ΠΏΠΎΡΡ€Π΅Π΄ΡΡ‚Π²Π΅Π½Π½ΠΎ ΠΎΡ‚ `Form`.
 
index c7f37c2baf5492199c527f952d38501deba72cac..3852e3a03f8a894c05a8d41c3040d131999e5939 100644 (file)
@@ -2,7 +2,7 @@
 
 Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ **Pydantic-ΠΌΠΎΠ΄Π΅Π»ΠΈ** Π΄Π»Ρ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡ **ΠΏΠΎΠ»Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹** Π² FastAPI.
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
 
 Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹, ΡΠ½Π°Ρ‡Π°Π»Π° ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ [`python-multipart`](https://github.com/Kludex/python-multipart).
 
index f291d53479cc557ff23dcd8ced117c56fe0353ba..347818ae32b10382dd02a6ddaf708fddde0498e6 100644 (file)
@@ -2,7 +2,7 @@
 
 Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΠΎΠ»Ρ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ `File` ΠΈ `Form`.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ/ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌ, ΡΠ½Π°Ρ‡Π°Π»Π° ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ [`python-multipart`](https://github.com/Kludex/python-multipart).
 
index 3760a8a3b95c8de92e0892c198f20859a14e9a58..3108c933ebcdf352e2738272b610891641e71b34 100644 (file)
@@ -2,7 +2,7 @@
 
 ΠšΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Ρ Ρ„ΠΎΡ€ΠΌΡ‹ Π²ΠΌΠ΅ΡΡ‚ΠΎ JSON, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `Form`.
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹, ΡΠ½Π°Ρ‡Π°Π»Π° ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ [`python-multipart`](https://github.com/Kludex/python-multipart).
 
@@ -32,7 +32,7 @@ $ pip install python-multipart
 
 Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `Form` Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ Ρ `Body` (ΠΈ `Query`, `Path`, `Cookie`), Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `user-name` Π²ΠΌΠ΅ΡΡ‚ΠΎ `username`) ΠΈ Ρ‚.Π΄.
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 `Form` β€” ΡΡ‚ΠΎ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ся Π½Π΅ΠΏΠΎΡΡ€Π΅Π΄ΡΡ‚Π²Π΅Π½Π½ΠΎ ΠΎΡ‚ `Body`.
 
index 510143d7b4eaedc270ceb3a7d420d8d2ea36a427..bf0a6fc0ad46f3db8170dd8166c4fb369315c189 100644 (file)
@@ -72,11 +72,11 @@ FastAPI Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚ΠΎΡ‚ `response_model` Π΄Π»Ρ Π΄
 
 {* ../../docs_src/response_model/tutorial002_py310.py hl[7,9] *}
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ `EmailStr`, ΡΠ½Π°Ρ‡Π°Π»Π° ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ [`email-validator`](https://github.com/JoshData/python-email-validator).
 
-Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡΠΎΠ·Π΄Π°Π»ΠΈ [Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅](../virtual-environments.md), Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ, Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
+Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡΠΎΠ·Π΄Π°Π»ΠΈ [Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅](../virtual-environments.md), Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ, Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
 
 ```console
 $ pip install email-validator
@@ -178,7 +178,7 @@ FastAPI Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ‰Π΅ΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²ΠΌΠ΅ΡΡ‚Π΅ Ρ
 
 ## Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² { #other-return-type-annotations }
 
-Π‘Ρ‹Π²Π°ΡŽΡ‚ ΡΠ»ΡƒΡ‡Π°ΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌ ΠΏΠΎΠ»Π΅ΠΌ Pydantic, ΠΈ Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΡΡ‚ΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π΄ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°, mypy ΠΈ Ρ‚.Π΄.).
+Π‘Ρ‹Π²Π°ΡŽΡ‚ ΡΠ»ΡƒΡ‡Π°ΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌ ΠΏΠΎΠ»Π΅ΠΌ Pydantic, ΠΈ Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΡΡ‚ΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π΄ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Ρ‹, mypy ΠΈ Ρ‚.Π΄.).
 
 ### Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Response Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ { #return-a-response-directly }
 
@@ -251,7 +251,7 @@ FastAPI Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ‰Π΅ΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²ΠΌΠ΅ΡΡ‚Π΅ Ρ
 }
 ```
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:
 
index f3144a33ab4f328635d953f38ae005bc18196257..ef190a341cb56cf4e944e518c46814d77e4f21dd 100644 (file)
@@ -18,7 +18,7 @@
 
 ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `status_code` ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‡ΠΈΡΠ»ΠΎ, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅ HTTP ΡΡ‚атус-ΠΊΠΎΠ΄.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° `status_code` Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ `IntEnum`, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ [`http.HTTPStatus`](https://docs.python.org/3/library/http.html#http.HTTPStatus) Π² Python.
 
index ee2f5b99135dda1c105d93ddd35d847aedb88488..435b34460a52534d24ff3698cb0805cb52db431f 100644 (file)
@@ -24,7 +24,7 @@
 
 ///
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 OpenAPI 3.1.0 (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π°Ρ‡ΠΈΠ½Π°Ρ Ρ FastAPI 0.99.0) Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ `examples`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡΠ²Π»ΡΠ΅Ρ‚ся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π° **JSON Schema**.
 
@@ -155,7 +155,7 @@ OpenAPI Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»Π° ΠΏΠΎΠ»Ρ `example` ΠΈ `examples` Π² Π΄Ρ€ΡƒΠ³
     * `File()`
     * `Form()`
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π­Ρ‚ΠΎΡ‚ ΡΡ‚Π°Ρ€Ρ‹ΠΉ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ‡Π½Ρ‹ΠΉ Π΄Π»Ρ OpenAPI ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ `examples` Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ся `openapi_examples`, Π½Π°Ρ‡ΠΈΠ½Π°Ρ Ρ FastAPI `0.103.0`.
 
@@ -171,7 +171,7 @@ OpenAPI Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»Π° ΠΏΠΎΠ»Ρ `example` ΠΈ `examples` Π² Π΄Ρ€ΡƒΠ³
 
 Π­Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ `examples` Π² JSON Schema β€” ΡΡ‚ΠΎ **просто `list`** ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π° Π½Π΅ dict Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠ°ΠΊ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅ΡΡ‚Π°Ρ… OpenAPI (описанных Π²Ρ‹ΡˆΠ΅).
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π”Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ OpenAPI 3.1.0 Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Ρ ΡΡ‚ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ, Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Ρ JSON Schema, ΠΊΠ°ΠΊΠΎΠ΅β€‘Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ Swagger UI, ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π» OpenAPI 3.1.0 (ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Ρ Ρ Π²Π΅Ρ€ΡΠΈΠΈ 5.0.0 πŸŽ‰).
 
index c55e832f40b7a5ef5689fcbee6684509da1a24ed..e702dfadb7903f48b329bc92c73f7eba2b6a604d 100644 (file)
@@ -24,7 +24,7 @@
 
 ## Π—апуск { #run-it }
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 ΠŸΠ°ΠΊΠ΅Ρ‚ [`python-multipart`](https://github.com/Kludex/python-multipart) Π°Π²Ρ‚оматичСски ΡƒΡΡ‚анавливаСтся Π²ΠΌΠ΅ΡΡ‚Π΅ Ρ **FastAPI**, Π΅ΡΠ»ΠΈ Π²Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ `pip install "fastapi[standard]"`.
 
@@ -60,7 +60,7 @@ $ fastapi dev
 
 <img src="/img/tutorial/security/image01.png">
 
-/// check | ΠšΠ½ΠΎΠΏΠΊΠ° Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ!
+/// tip | ΠšΠ½ΠΎΠΏΠΊΠ° Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ!
 
 Π£ Π²Π°Ρ ΡƒΠΆΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡŒ Π½ΠΎΠ²Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° Β«AuthorizeΒ».
 
@@ -118,7 +118,7 @@ OAuth2 Π±Ρ‹Π» ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±ΡΠΊΠ΅Π½Π΄ ΠΈΠ»ΠΈ
 
 Π’ ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ **OAuth2**, Ρ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ **Password**, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠΊΠ΅Π½ **Bearer**. Π”ля ΡΡ‚ΠΎΠ³ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»Π°ΡΡ `OAuth2PasswordBearer`.
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π’ΠΎΠΊΠ΅Π½ Β«bearerΒ» β€” Π½Π΅ Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.
 
@@ -148,7 +148,7 @@ OAuth2 Π±Ρ‹Π» ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±ΡΠΊΠ΅Π½Π΄ ΠΈΠ»ΠΈ
 
 Π‘ΠΊΠΎΡ€ΠΎ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΈ ΡΠ°ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΡƒΡ‚ΠΈ.
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π•сли Π²Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ ΡΡ‚Ρ€ΠΎΠ³ΠΈΠΉ Β«ΠΏΠΈΡ‚онист», Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΡ‚ΡŒΡΡ ΡΡ‚ΠΈΠ»ΡŒ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° `tokenUrl` Π²ΠΌΠ΅ΡΡ‚ΠΎ `token_url`.
 
@@ -176,7 +176,7 @@ oauth2_scheme(some, parameters)
 
 **FastAPI** Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Ρƒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π΄Π»Ρ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ Β«ΡΡ…Π΅ΠΌΡ‹ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΠΈΒ» Π² ΡΡ…Π΅ΠΌΠ΅ OpenAPI (ΠΈ Π² Π°Π²Ρ‚оматичСской Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ API).
 
-/// info | Π’СхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ
+/// note | Π’СхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ
 
 **FastAPI** Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»Π°ΡΡ `OAuth2PasswordBearer` (ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ) Π΄Π»Ρ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡ…Π΅ΠΌΡ‹ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΠΈ Π² OpenAPI, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π°ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ся ΠΎΡ‚ `fastapi.security.oauth2.OAuth2`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π½Π°ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ся ΠΎΡ‚ `fastapi.security.base.SecurityBase`.
 
@@ -186,7 +186,7 @@ oauth2_scheme(some, parameters)
 
 ## Π§Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ { #what-it-does }
 
-Он Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² Π·Π°ΠΏΡ€ΠΎΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ `Authorization`, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” ΡΡ‚ΠΎ `Bearer ` ΠΏΠ»ΡŽΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½, ΠΈ Π²Π΅Ρ€Π½Π΅Ρ‚ Ρ‚ΠΎΠΊΠ΅Π½ ΠΊΠ°ΠΊ `str`.
+Он Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² Π·Π°ΠΏΡ€ΠΎΡΠ΅ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ `Authorization`, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” ΡΡ‚ΠΎ `Bearer ` ΠΏΠ»ΡŽΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½, ΠΈ Π²Π΅Ρ€Π½Π΅Ρ‚ Ρ‚ΠΎΠΊΠ΅Π½ ΠΊΠ°ΠΊ `str`.
 
 Π•сли Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ `Authorization` ΠΎΡ‚сутствуСт ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Ρ‚ΠΎΠΊΠ΅Π½ `Bearer `, ΠΎΠ½ ΡΡ€Π°Π·Ρƒ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ ΠΎΡˆΠΈΠ±ΠΊΠΎΠΉ ΡΠΎ ΡΡ‚атус-ΠΊΠΎΠ΄ΠΎΠΌ 401 (`UNAUTHORIZED`).
 
index 8388b672c73662c5442bba2185a78a30177ee498..7bd48a9a0f6976135c76d287b7f2f5662a4bfdc2 100644 (file)
@@ -30,7 +30,7 @@
 
 ## ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Сля { #get-the-user }
 
-`get_current_user` Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Π½Π°ΠΌΠΈ (Π½Π΅Π½Π°ΡΡ‚ΠΎΡΡ‰ΡƒΡŽ) ΡΠ»ΡƒΠΆΠ΅Π±Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΊΠΎΡ‚орая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠΊΠ΅Π½ Ρ‚ΠΈΠΏΠ° `str` ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°ΡˆΡƒ Pydantic-модСль `User`:
+`get_current_user` Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Π½Π°ΠΌΠΈ (Π½Π΅Π½Π°ΡΡ‚ΠΎΡΡ‰ΡƒΡŽ) Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΊΠΎΡ‚орая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠΊΠ΅Π½ Ρ‚ΠΈΠΏΠ° `str` ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°ΡˆΡƒ Pydantic-модСль `User`:
 
 {* ../../docs_src/security/tutorial002_an_py310.py hl[19:22,26:27] *}
 
@@ -52,7 +52,7 @@
 
 ///
 
-/// check | Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°
+/// tip | ΠŸΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°
 
 Π’ΠΎ, ΠΊΠ°ΠΊ ΡƒΡΡ‚Ρ€ΠΎΠ΅Π½Π° ΡΡ‚Π° ΡΠΈΡΡ‚Π΅ΠΌΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚Π΅ΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΌΠΎΠ΄Π΅Π»ΡŒ `User`.
 
@@ -78,7 +78,7 @@
 
 ## Π Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° { #code-size }
 
-Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠ²Π½Ρ‹ΠΌ. Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΌΡ‹ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Π΅ΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠ»ΡƒΠΆΠ΅Π±Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ*.
+Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠ²Π½Ρ‹ΠΌ. Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΌΡ‹ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Π΅ΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ *ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ*.
 
 ΠΠΎ Π²ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚.
 
index e3729dfc83f9294a656517dc4494272887a63d74..0409cd0a910ca36dc4798e6c7e05a6c24c124ed7 100644 (file)
@@ -42,7 +42,7 @@ $ pip install pyjwt
 
 </div>
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
 
 Π•сли Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ RSA ΠΈΠ»ΠΈ ECDSA, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ `pyjwt[crypto]`.
 
@@ -213,7 +213,7 @@ JWT ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π΄Π»Ρ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ, 
 Username: `johndoe`
 Password: `secret`
 
-/// check | ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°
+/// tip | ΠŸΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°
 
 ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½ΠΈΠ³Π΄Π΅ Π² ΠΊΠΎΠ΄Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Ρ‚Скст ΠΏΠ°Ρ€ΠΎΠ»Ρ "`secret`", ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π³ΠΎ Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.
 
index 4ef5109e4f6148c41adbc81bbd9a8703fedc8523..415ef017b4f4eff133724a6b9998569359970c31 100644 (file)
@@ -32,7 +32,7 @@ OAuth2 ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ "password
 * `instagram_basic` ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся Facebook / Instagram.
 * `https://www.googleapis.com/auth/drive` ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся Google.
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 Π’ OAuth2 "scope" β€” ΡΡ‚ΠΎ ΠΏΡ€ΠΎΡΡ‚ΠΎ ΡΡ‚Ρ€ΠΎΠΊΠ°, ΠΊΠΎΡ‚орая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.
 
 ΠΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π»ΠΈ ΠΎΠ½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ `:`, ΠΈΠ»ΠΈ ΡΠ²Π»ΡΠ΅Ρ‚ся Π»ΠΈ ΡΡ‚ΠΎ URL.
@@ -68,7 +68,7 @@ OAuth2 ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ "password
 * ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ `client_id` (Π² Π½Π°ΡˆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ).
 * ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ `client_secret` (Π² Π½Π°ΡˆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ).
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 `OAuth2PasswordRequestForm` β€” ΡΡ‚ΠΎ Π½Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ **FastAPI**, ΠΊΠ°ΠΊ `OAuth2PasswordBearer`.
 
 `OAuth2PasswordBearer` ΡΠΎΠΎΠ±Ρ‰Π°Π΅Ρ‚ **FastAPI**, Ρ‡Ρ‚ΠΎ ΡΡ‚ΠΎ ΡΡ…Π΅ΠΌΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ½Π° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ‚ся Π² OpenAPI ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.
@@ -136,7 +136,7 @@ UserInDB(
 )
 ```
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠ±ΡŠΡΡΠ½Π΅Π½ΠΈΠ΅ `**user_dict` ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² [Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊ **Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΎΠ΄Π΅Π»ΡΠΌ**](../extra-models.md#about-user-in-dict).
 ///
 
@@ -182,7 +182,7 @@ UserInDB(
 
 {* ../../docs_src/security/tutorial003_an_py310.py hl[58:66,69:74,94] *}
 
-/// info | Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ `WWW-Authenticate` ΡΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ `Bearer`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π·Π΄Π΅ΡΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ, Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅Ρ‚ся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.
 
 Π›ΡŽΠ±ΠΎΠΉ HTTP ΡΡ‚атус-ΠΊΠΎΠ΄ 401 "UNAUTHORIZED" Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ `WWW-Authenticate`.
index be6bd23665dfeb794198a1ef3cb250f39d984f3a..ea49f85c82b66cbd095f3afc21640e332123e99a 100644 (file)
@@ -4,7 +4,7 @@
 
 Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° [Π‘Ρ‚Ρ€ΠΈΠΌΠΈΠ½Π³ JSON Lines](stream-json-lines.md), Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ `text/event-stream`, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ся Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· [`EventSource` API](https://developer.mozilla.org/en-US/docs/Web/API/EventSource).
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² FastAPI 0.135.0.
 
@@ -29,7 +29,7 @@ SSE Ρ‡Π°ΡΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Π»Ρ ΡΡ‚Ρ€ΠΈΠΌΠΈΠ½Π³Π° ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π˜
 
 /// tip | Π‘ΠΎΠ²Π΅Ρ‚
 
-Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΡ‚Ρ€ΠΈΠΌΠΈΡ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ Π°ΡƒΠ΄ΠΈΠΎ, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ: [Stream Data](../advanced/stream-data.md).
+Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΡ‚Ρ€ΠΈΠΌΠΈΡ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ Π°ΡƒΠ΄ΠΈΠΎ, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ: [ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Π°Ρ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ…](../advanced/stream-data.md).
 
 ///
 
@@ -113,7 +113,7 @@ SSE Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ Π»ΡŽΠ±Ρ‹ΠΌ HTTP-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ `GE
 
 FastAPI ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π΄Π»Ρ SSE.
 
-- ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Β«pingΒ» Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ (Β«keep aliveΒ») ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 15 ΡΠ΅ΠΊΡƒΠ½Π΄, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠΊΡΠΈ, ΠΊΠ°ΠΊ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ΠΎ Π² [HTML specification: Server-Sent Events](https://html.spec.whatwg.org/multipage/server-sent-events.html#authoring-notes).
+- ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Β«pingΒ» Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ (Β«keep aliveΒ») ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 15 ΡΠ΅ΠΊΡƒΠ½Π΄, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠΊΡΠΈ, ΠΊΠ°ΠΊ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ΠΎ Π² [БпСцификация HTML: Server-Sent Events](https://html.spec.whatwg.org/multipage/server-sent-events.html#authoring-notes).
 - Π£ΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ `Cache-Control: no-cache`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°.
 - Π£ΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ `X-Accel-Buffering: no`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠΊΡΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Nginx.
 
index d8bb9132b7bbb25fe5356b6e85ac5c2ed290014f..a9390685e2dbed79c315bd2d2f983eccd92736af 100644 (file)
@@ -2,7 +2,7 @@
 
 Π£ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π² Β«**ΠΏΠΎΡ‚ΠΎΠΊΠ΅**Β». Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ **JSON Lines**.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² FastAPI 0.134.0.
 
@@ -48,7 +48,7 @@ sequenceDiagram
 
 Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° JSON-массив (эквивалСнт ΡΠΏΠΈΡΠΊΠ° Python), Π½ΠΎ Π²ΠΌΠ΅ΡΡ‚ΠΎ Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΌ Π² `[]` ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ `,` ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, Π·Π΄Π΅ΡΡŒ **ΠΎΠ΄ΠΈΠ½ JSON-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π° ΡΡ‚Ρ€ΠΎΠΊΡƒ**, ΠΎΠ½ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΉ ΡΡ‚Ρ€ΠΎΠΊΠΈ.
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π’Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π°ΡˆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΡΡ‚Ρ€ΠΎΠΊΡƒ, ΠΏΠΎΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΡ‚рСбляСт ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΡΡ‚Ρ€ΠΎΠΊΠΈ.
 
index aef7b86dedfcf003073d633ebf3a494be5eba27d..f7367bcba6aaea623a59df9e563735b357346b25 100644 (file)
@@ -8,7 +8,7 @@
 
 ## Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° `TestClient` { #using-testclient }
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 Π”ля ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° `TestClient` ΡΠ½Π°Ρ‡Π°Π»Π° ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ [`httpx`](https://www.python-httpx.org).
 
@@ -144,7 +144,7 @@ $ pip install httpx
 
 Π”ля ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π±ΡΠΊΠ΅Π½Π΄ Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `httpx` ΠΈΠ»ΠΈ `TestClient` ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ Ρ [Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ HTTPX](https://www.python-httpx.org).
 
-/// info | Π˜Π½Ρ„ормация
+/// note | ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
 
 ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ `TestClient` ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² JSON, Π½ΠΎ Π½Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Pydantic.