Browse Source

🌐 Update translations for uk (update-outdated) (#15756)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
pull/15772/head
Sebastián Ramírez 2 weeks ago
committed by GitHub
parent
commit
3b9f938e50
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 4
      docs/uk/docs/advanced/additional-responses.md
  2. 8
      docs/uk/docs/advanced/advanced-dependencies.md
  3. 4
      docs/uk/docs/advanced/custom-response.md
  4. 4
      docs/uk/docs/advanced/dataclasses.md
  5. 4
      docs/uk/docs/advanced/events.md
  6. 1
      docs/uk/docs/advanced/generate-clients.md
  7. 4
      docs/uk/docs/advanced/openapi-callbacks.md
  8. 4
      docs/uk/docs/advanced/openapi-webhooks.md
  9. 12
      docs/uk/docs/advanced/path-operation-advanced-configuration.md
  10. 2
      docs/uk/docs/advanced/response-directly.md
  11. 4
      docs/uk/docs/advanced/security/oauth2-scopes.md
  12. 4
      docs/uk/docs/advanced/stream-data.md
  13. 4
      docs/uk/docs/advanced/strict-content-type.md
  14. 2
      docs/uk/docs/advanced/websockets.md
  15. 2
      docs/uk/docs/advanced/wsgi.md
  16. 8
      docs/uk/docs/deployment/docker.md
  17. 24
      docs/uk/docs/deployment/fastapicloud.md
  18. 3
      docs/uk/docs/deployment/manually.md
  19. 2
      docs/uk/docs/deployment/server-workers.md
  20. 12
      docs/uk/docs/how-to/extending-openapi.md
  21. 4
      docs/uk/docs/how-to/separate-openapi-schemas.md
  22. 6
      docs/uk/docs/index.md
  23. 32
      docs/uk/docs/tutorial/bigger-applications.md
  24. 4
      docs/uk/docs/tutorial/body-multiple-params.md
  25. 4
      docs/uk/docs/tutorial/body-nested-models.md
  26. 2
      docs/uk/docs/tutorial/body.md
  27. 6
      docs/uk/docs/tutorial/cookie-param-models.md
  28. 4
      docs/uk/docs/tutorial/cookie-params.md
  29. 2
      docs/uk/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
  30. 2
      docs/uk/docs/tutorial/dependencies/dependencies-with-yield.md
  31. 6
      docs/uk/docs/tutorial/dependencies/index.md
  32. 10
      docs/uk/docs/tutorial/dependencies/sub-dependencies.md
  33. 38
      docs/uk/docs/tutorial/first-steps.md
  34. 18
      docs/uk/docs/tutorial/metadata.md
  35. 4
      docs/uk/docs/tutorial/path-operation-configuration.md
  36. 4
      docs/uk/docs/tutorial/path-params-numeric-validations.md
  37. 8
      docs/uk/docs/tutorial/path-params.md
  38. 4
      docs/uk/docs/tutorial/query-params-str-validations.md
  39. 2
      docs/uk/docs/tutorial/query-params.md
  40. 4
      docs/uk/docs/tutorial/request-files.md
  41. 6
      docs/uk/docs/tutorial/request-form-models.md
  42. 2
      docs/uk/docs/tutorial/request-forms-and-files.md
  43. 6
      docs/uk/docs/tutorial/request-forms.md
  44. 6
      docs/uk/docs/tutorial/response-model.md
  45. 2
      docs/uk/docs/tutorial/response-status-code.md
  46. 6
      docs/uk/docs/tutorial/schema-extra-example.md
  47. 10
      docs/uk/docs/tutorial/security/first-steps.md
  48. 2
      docs/uk/docs/tutorial/security/get-current-user.md
  49. 4
      docs/uk/docs/tutorial/security/oauth2-jwt.md
  50. 8
      docs/uk/docs/tutorial/security/simple-oauth2.md
  51. 12
      docs/uk/docs/tutorial/server-sent-events.md
  52. 4
      docs/uk/docs/tutorial/stream-json-lines.md
  53. 4
      docs/uk/docs/tutorial/testing.md

4
docs/uk/docs/advanced/additional-responses.md

@ -34,7 +34,7 @@
/// ///
/// info | Інформація /// note | Примітка
Ключ `model` не є частиною OpenAPI. Ключ `model` не є частиною OpenAPI.
@ -183,7 +183,7 @@
/// ///
/// info | Інформація /// note | Примітка
Поки ви явно не вкажете інший тип медіа в параметрі `responses`, FastAPI вважатиме, що відповідь має той самий тип медіа, що й основний клас відповіді (типово `application/json`). Поки ви явно не вкажете інший тип медіа в параметрі `responses`, FastAPI вважатиме, що відповідь має той самий тип медіа, що й основний клас відповіді (типово `application/json`).

8
docs/uk/docs/advanced/advanced-dependencies.md

@ -52,7 +52,7 @@ checker(q="somequery")
{* ../../docs_src/dependencies/tutorial011_an_py310.py hl[22] *} {* ../../docs_src/dependencies/tutorial011_an_py310.py hl[22] *}
/// tip | Порада /// tip
Усе це може здаватися надуманим. І поки що може бути не дуже зрозуміло, навіщо це корисно. Усе це може здаватися надуманим. І поки що може бути не дуже зрозуміло, навіщо це корисно.
@ -66,7 +66,7 @@ checker(q="somequery")
## Залежності з `yield`, `HTTPException`, `except` та фоновими задачами { #dependencies-with-yield-httpexception-except-and-background-tasks } ## Залежності з `yield`, `HTTPException`, `except` та фоновими задачами { #dependencies-with-yield-httpexception-except-and-background-tasks }
/// warning | Попередження /// warning
Найімовірніше, вам не знадобляться ці технічні деталі. Найімовірніше, вам не знадобляться ці технічні деталі.
@ -98,7 +98,7 @@ checker(q="somequery")
Цю поведінку змінено у 0.118.0: завершальний код після `yield` знову виконується після відправлення відповіді. Цю поведінку змінено у 0.118.0: завершальний код після `yield` знову виконується після відправлення відповіді.
/// info | Інформація /// note
Як побачите нижче, це дуже схоже на поведінку до версії 0.106.0, але з кількома покращеннями та виправленнями помилок у крайових випадках. Як побачите нижче, це дуже схоже на поведінку до версії 0.106.0, але з кількома покращеннями та виправленнями помилок у крайових випадках.
@ -150,7 +150,7 @@ checker(q="somequery")
У **FastAPI** 0.106.0 це змінено, щоб не утримувати ресурси під час очікування, поки відповідь піде мережею. У **FastAPI** 0.106.0 це змінено, щоб не утримувати ресурси під час очікування, поки відповідь піде мережею.
/// tip | Порада /// tip
Крім того, фонова задача зазвичай є незалежним набором логіки, який слід обробляти окремо, з власними ресурсами (наприклад, власним з'єднанням з базою даних). Крім того, фонова задача зазвичай є незалежним набором логіки, який слід обробляти окремо, з власними ресурсами (наприклад, власним з'єднанням з базою даних).

4
docs/uk/docs/advanced/custom-response.md

@ -41,7 +41,7 @@
{* ../../docs_src/custom_response/tutorial002_py310.py hl[2,7] *} {* ../../docs_src/custom_response/tutorial002_py310.py hl[2,7] *}
/// info | Інформація /// note | Примітка
Параметр `response_class` також визначатиме «медіа-тип» відповіді. Параметр `response_class` також визначатиме «медіа-тип» відповіді.
@ -65,7 +65,7 @@
/// ///
/// info | Інформація /// note | Примітка
Звісно, фактичні заголовок `Content-Type`, код статусу тощо прийдуть з об'єкта `Response`, який ви повернули. Звісно, фактичні заголовок `Content-Type`, код статусу тощо прийдуть з об'єкта `Response`, який ви повернули.

4
docs/uk/docs/advanced/dataclasses.md

@ -18,7 +18,7 @@ FastAPI побудовано поверх **Pydantic**, і я показував
Це працює так само, як із моделями Pydantic. Насправді під капотом це також досягається за допомогою Pydantic. Це працює так само, як із моделями Pydantic. Насправді під капотом це також досягається за допомогою Pydantic.
/// info /// note | Примітка
Майте на увазі, що dataclasses не можуть робити все те, що можуть моделі Pydantic. Майте на увазі, що dataclasses не можуть робити все те, що можуть моделі Pydantic.
@ -64,7 +64,7 @@ Dataclass буде автоматично перетворено на dataclass
6. Тут ми повертаємо словник, що містить `items`, який є списком dataclass. 6. Тут ми повертаємо словник, що містить `items`, який є списком dataclass.
FastAPI усе ще здатний <dfn title="перетворення даних у формат, який можна передати">серіалізувати</dfн> дані до JSON. FastAPI усе ще здатний <dfn title="перетворення даних у формат, який можна передати">серіалізувати</dfn> дані до JSON.
7. Тут у `response_model` використано анотацію типу список dataclass `Author`. 7. Тут у `response_model` використано анотацію типу список dataclass `Author`.

4
docs/uk/docs/advanced/events.md

@ -120,7 +120,7 @@ async with lifespan(app):
Тут функція-обробник події `shutdown` запише текстовий рядок `"Application shutdown"` у файл `log.txt`. Тут функція-обробник події `shutdown` запише текстовий рядок `"Application shutdown"` у файл `log.txt`.
/// info | Інформація /// note | Примітка
У функції `open()` параметр `mode="a"` означає «append», тож рядок буде додано після всього, що є у файлі, без перезапису попереднього вмісту. У функції `open()` параметр `mode="a"` означає «append», тож рядок буде додано після всього, що є у файлі, без перезапису попереднього вмісту.
@ -152,7 +152,7 @@ async with lifespan(app):
Під капотом, у технічній специфікації ASGI, це частина [Протоколу тривалості життя](https://asgi.readthedocs.io/en/latest/specs/lifespan.html), і там визначені події `startup` і `shutdown`. Під капотом, у технічній специфікації ASGI, це частина [Протоколу тривалості життя](https://asgi.readthedocs.io/en/latest/specs/lifespan.html), і там визначені події `startup` і `shutdown`.
/// info | Інформація /// note | Примітка
Ви можете прочитати більше про обробники `lifespan` у [документації Starlette про Lifespan](https://www.starlette.dev/lifespan/). Ви можете прочитати більше про обробники `lifespan` у [документації Starlette про Lifespan](https://www.starlette.dev/lifespan/).

1
docs/uk/docs/advanced/generate-clients.md

@ -31,7 +31,6 @@ FastAPI автоматично генерує специфікації **OpenAPI
Наприклад, ви можете спробувати: Наприклад, ви можете спробувати:
* [Stainless](https://www.stainless.com/?utm_source=fastapi&utm_medium=referral) * [Stainless](https://www.stainless.com/?utm_source=fastapi&utm_medium=referral)
* [liblab](https://developers.liblab.com/tutorials/sdk-for-fastapi?utm_source=fastapi)
Деякі з цих рішень також можуть бути з відкритим кодом або мати безкоштовні тарифи, тож ви можете спробувати їх без фінансових зобов'язань. Інші комерційні генератори SDK також доступні й їх можна знайти онлайн. 🤓 Деякі з цих рішень також можуть бути з відкритим кодом або мати безкоштовні тарифи, тож ви можете спробувати їх без фінансових зобов'язань. Інші комерційні генератори SDK також доступні й їх можна знайти онлайн. 🤓

4
docs/uk/docs/advanced/openapi-callbacks.md

@ -167,13 +167,13 @@ https://www.external.org/events/invoices/2expen51ve
На цьому етапі ви маєте потрібні операції шляху зворотного виклику (ті, які має реалізувати *зовнішній розробник* у *зовнішньому API*) у створеному вище маршрутизаторі зворотного виклику. На цьому етапі ви маєте потрібні операції шляху зворотного виклику (ті, які має реалізувати *зовнішній розробник* у *зовнішньому API*) у створеному вище маршрутизаторі зворотного виклику.
Тепер використайте параметр `callbacks` у декораторі операції шляху вашого API, щоб передати атрибут `.routes` (це насправді просто `list` маршрутів/операцій шляху) з цього маршрутизатора зворотного виклику: Тепер використайте параметр `callbacks` у декораторі операції шляху вашого API, щоб передати атрибут `.routes` з цього маршрутизатора зворотного виклику:
{* ../../docs_src/openapi_callbacks/tutorial001_py310.py hl[33] *} {* ../../docs_src/openapi_callbacks/tutorial001_py310.py hl[33] *}
/// tip | Порада /// tip | Порада
Зверніть увагу, що ви передаєте не сам маршрутизатор (`invoices_callback_router`) у `callback=`, а атрибут `.routes`, тобто `invoices_callback_router.routes`. Зверніть увагу, що ви передаєте не сам маршрутизатор (`invoices_callback_router`) у `callbacks=`, а його `.routes`, тобто `invoices_callback_router.routes`. FastAPI використає ці маршрути, щоб згенерувати документацію OpenAPI для зворотних викликів.
/// ///

4
docs/uk/docs/advanced/openapi-webhooks.md

@ -22,7 +22,7 @@
Це значно спростить для ваших користувачів **реалізацію їхніх API** для отримання ваших запитів **вебхуків**; вони навіть зможуть згенерувати частину власного коду API автоматично. Це значно спростить для ваших користувачів **реалізацію їхніх API** для отримання ваших запитів **вебхуків**; вони навіть зможуть згенерувати частину власного коду API автоматично.
/// info | Інформація /// note | Примітка
Вебхуки доступні в OpenAPI 3.1.0 і вище, підтримуються FastAPI `0.99.0` і вище. Вебхуки доступні в OpenAPI 3.1.0 і вище, підтримуються FastAPI `0.99.0` і вище.
@ -36,7 +36,7 @@
Визначені вами вебхуки потраплять до **схеми OpenAPI** та автоматичного **інтерфейсу документації**. Визначені вами вебхуки потраплять до **схеми OpenAPI** та автоматичного **інтерфейсу документації**.
/// info | Інформація /// note | Примітка
Об'єкт `app.webhooks` насправді є просто `APIRouter` - тим самим типом, який ви використовуєте, структуризуючи застосунок у кількох файлах. Об'єкт `app.webhooks` насправді є просто `APIRouter` - тим самим типом, який ви використовуєте, структуризуючи застосунок у кількох файлах.

12
docs/uk/docs/advanced/path-operation-advanced-configuration.md

@ -16,17 +16,11 @@
### Використання назви *функції операції шляху* як operationId { #using-the-path-operation-function-name-as-the-operationid } ### Використання назви *функції операції шляху* як operationId { #using-the-path-operation-function-name-as-the-operationid }
Якщо ви хочете використовувати назви функцій ваших API як `operationId`, ви можете пройтися по всіх них і переписати `operation_id` кожної *операції шляху*, використовуючи їхній `APIRoute.name`. Якщо ви хочете використовувати назви функцій ваших API як `operationId`, ви можете передати власну `generate_unique_id_function` до `FastAPI`.
Зробіть це після додавання всіх *операцій шляху*. Функція отримує кожен `APIRoute` і повертає `operationId`, який слід використовувати для цієї операції шляху.
{* ../../docs_src/path_operation_advanced_configuration/tutorial002_py310.py hl[2, 12:21, 24] *} {* ../../docs_src/path_operation_advanced_configuration/tutorial002_py310.py hl[2,5:6,9] *}
/// tip | Порада
Якщо ви вручну викликаєте `app.openapi()`, оновіть усі `operationId` до цього.
///
/// warning | Попередження /// warning | Попередження

2
docs/uk/docs/advanced/response-directly.md

@ -18,7 +18,7 @@
Ви можете повертати `Response` або будь-який його підклас. Ви можете повертати `Response` або будь-який його підклас.
/// info | Інформація /// note | Примітка
`JSONResponse` сам є підкласом `Response`. `JSONResponse` сам є підкласом `Response`.

4
docs/uk/docs/advanced/security/oauth2-scopes.md

@ -46,7 +46,7 @@ OAuth2 зі scopes - це механізм, який використовуют
- `instagram_basic` використовується Facebook / Instagram. - `instagram_basic` використовується Facebook / Instagram.
- `https://www.googleapis.com/auth/drive` використовується Google. - `https://www.googleapis.com/auth/drive` використовується Google.
/// info | Інформація /// note | Примітка
В OAuth2 «scope» - це просто строка, що декларує конкретний потрібний дозвіл. В OAuth2 «scope» - це просто строка, що декларує конкретний потрібний дозвіл.
@ -126,7 +126,7 @@ OAuth2 зі scopes - це механізм, який використовуют
{* ../../docs_src/security/tutorial005_an_py310.py hl[5,141,172] *} {* ../../docs_src/security/tutorial005_an_py310.py hl[5,141,172] *}
/// info | Технічні деталі /// note | Технічні деталі
`Security` насправді є підкласом `Depends`, і має лише один додатковий параметр, який ми побачимо пізніше. `Security` насправді є підкласом `Depends`, і має лише один додатковий параметр, який ми побачимо пізніше.

4
docs/uk/docs/advanced/stream-data.md

@ -4,7 +4,7 @@
Але якщо ви хочете передавати потоком чисті бінарні дані або строки, ось як це зробити. Але якщо ви хочете передавати потоком чисті бінарні дані або строки, ось як це зробити.
/// info | Інформація /// note | Примітка
Додано у FastAPI 0.134.0. Додано у FastAPI 0.134.0.
@ -90,7 +90,7 @@ FastAPI передаватиме кожний фрагмент даних до `
І часто їх читання є блокувальною операцією (що може блокувати цикл подій), адже дані зчитуються з диска або мережі. І часто їх читання є блокувальною операцією (що може блокувати цикл подій), адже дані зчитуються з диска або мережі.
/// info | Інформація /// note | Примітка
Наведений вище приклад - виняток, адже об'єкт `io.BytesIO` вже в пам'яті, тож читання нічого не блокує. Наведений вище приклад - виняток, адже об'єкт `io.BytesIO` вже в пам'яті, тож читання нічого не блокує.

4
docs/uk/docs/advanced/strict-content-type.md

@ -40,7 +40,7 @@ http://localhost:8000
Використовуючи фронтенд, ви можете змушувати AI-агента виконувати дії від вашого імені. Використовуючи фронтенд, ви можете змушувати AI-агента виконувати дії від вашого імені.
Оскільки він працює локально, а не у відкритому інтернеті, ви вирішуєте не налаштовувати жодної автентифікації, просто покладаючись на доступ до локальної мережі. Оскільки він працює **локально**, а не у відкритому інтернеті, ви вирішуєте **не налаштовувати жодної автентифікації**, просто покладаючись на доступ до локальної мережі.
Один із ваших користувачів може встановити його і запустити локально. Один із ваших користувачів може встановити його і запустити локально.
@ -81,7 +81,7 @@ http://localhost:8000/v1/agents/multivac
З цим налаштуванням запити без заголовка `Content-Type` матимуть тіло, розібране як JSON, що відповідає поведінці старіших версій FastAPI. З цим налаштуванням запити без заголовка `Content-Type` матимуть тіло, розібране як JSON, що відповідає поведінці старіших версій FastAPI.
/// info | Інформація /// note | Примітка
Цю поведінку і конфігурацію додано у FastAPI 0.132.0. Цю поведінку і конфігурацію додано у FastAPI 0.132.0.

2
docs/uk/docs/advanced/websockets.md

@ -111,7 +111,7 @@ $ fastapi dev
{* ../../docs_src/websockets_/tutorial002_an_py310.py hl[68:69,82] *} {* ../../docs_src/websockets_/tutorial002_an_py310.py hl[68:69,82] *}
/// info /// note
Оскільки це WebSocket, не має сенсу піднімати `HTTPException`, натомість ми піднімаємо `WebSocketException`. Оскільки це WebSocket, не має сенсу піднімати `HTTPException`, натомість ми піднімаємо `WebSocketException`.

2
docs/uk/docs/advanced/wsgi.md

@ -6,7 +6,7 @@
## Використання `WSGIMiddleware` { #using-wsgimiddleware } ## Використання `WSGIMiddleware` { #using-wsgimiddleware }
/// info | Інформація /// note | Примітка
Для цього потрібно встановити `a2wsgi`, наприклад за допомогою `pip install a2wsgi`. Для цього потрібно встановити `a2wsgi`, наприклад за допомогою `pip install a2wsgi`.

8
docs/uk/docs/deployment/docker.md

@ -132,7 +132,7 @@ Successfully installed fastapi pydantic
</div> </div>
/// info | Інформація /// note | Примітка
Існують інші формати та інструменти для визначення і встановлення залежностей пакетів. Існують інші формати та інструменти для визначення і встановлення залежностей пакетів.
@ -291,7 +291,7 @@ COPY ./requirements.txt /code/requirements.txt
Docker та інші інструменти збирають ці образи контейнерів інкрементально, додаючи один шар поверх іншого, починаючи з верхньої частини `Dockerfile` і додаючи будь-які файли, створені кожною інструкцією в `Dockerfile`. Docker та інші інструменти збирають ці образи контейнерів інкрементально, додаючи один шар поверх іншого, починаючи з верхньої частини `Dockerfile` і додаючи будь-які файли, створені кожною інструкцією в `Dockerfile`.
Docker та подібні інструменти також використовують внутрішній кеш під час збірки образу. Якщо файл не змінювався з моменту останньої збірки, тоді він повторно використає той самий шар, створений востаннє, замість копіювання файлу знову та створення нового шару з нуля. Docker та подібні інструменти також використовують внутрішній кеш під час збірки образу. Якщо файл не змінювався з моменту останньої збірки, тоді він повторно використає той самий шар, створений востанє, замість копіювання файлу знову та створення нового шару з нуля.
Просте уникнення копіювання файлів не обов’язково суттєво покращує ситуацію, але оскільки для цього кроку використано кеш, він може використати кеш і для наступного кроку. Наприклад, він може використати кеш для інструкції, яка встановлює залежності: Просте уникнення копіювання файлів не обов’язково суттєво покращує ситуацію, але оскільки для цього кроку використано кеш, він може використати кеш і для наступного кроку. Наприклад, він може використати кеш для інструкції, яка встановлює залежності:
@ -492,7 +492,7 @@ Traefik має інтеграції з Docker, Kubernetes та іншими, т
Наявність іншого менеджера процесів всередині контейнера (як це було б із кількома працівниками) лише додасть зайвої складності, яку, найімовірніше, ви вже вирішуєте на рівні кластера. Наявність іншого менеджера процесів всередині контейнера (як це було б із кількома працівниками) лише додасть зайвої складності, яку, найімовірніше, ви вже вирішуєте на рівні кластера.
### Контейнери з кількома процесами та особливі випадки { #containers-with-multiple-processes-and-special-cases } ### Контейнери з кількоми процесами та особливі випадки { #containers-with-multiple-processes-and-special-cases }
Звісно, є особливі випадки, коли ви можете захотіти мати контейнер із кількома процесами-працівниками Uvicorn всередині. Звісно, є особливі випадки, коли ви можете захотіти мати контейнер із кількома процесами-працівниками Uvicorn всередині.
@ -556,7 +556,7 @@ CMD ["fastapi", "run", "app/main.py", "--port", "80", "--workers", "4"]
Якщо у вас кілька контейнерів, імовірно кожен запускає один процес (наприклад, у кластері Kubernetes), тоді ви, ймовірно, захочете мати окремий контейнер, який виконає попередні кроки в одному контейнері, запустивши один процес, перед запуском реплікованих контейнерів-працівників. Якщо у вас кілька контейнерів, імовірно кожен запускає один процес (наприклад, у кластері Kubernetes), тоді ви, ймовірно, захочете мати окремий контейнер, який виконає попередні кроки в одному контейнері, запустивши один процес, перед запуском реплікованих контейнерів-працівників.
/// info | Інформація /// note | Примітка
Якщо ви використовуєте Kubernetes, це, ймовірно, буде [Init Container](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/). Якщо ви використовуєте Kubernetes, це, ймовірно, буде [Init Container](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/).

24
docs/uk/docs/deployment/fastapicloud.md

@ -1,26 +1,6 @@
# FastAPI Cloud { #fastapi-cloud } # FastAPI Cloud { #fastapi-cloud }
Ви можете розгорнути свій застосунок FastAPI на [FastAPI Cloud](https://fastapicloud.com) **однією командою**, приєднуйтесь до списку очікування, якщо ще ні. 🚀 Ви можете розгорнути свій застосунок FastAPI на [FastAPI Cloud](https://fastapicloud.com) лише **однією командою**. 🚀
## Вхід { #login }
Переконайтеся, що у вас вже є обліковий запис **FastAPI Cloud** (ми запросили вас зі списку очікування 😉).
Потім увійдіть:
<div class="termy">
```console
$ fastapi login
You are logged in to FastAPI Cloud 🚀
```
</div>
## Розгортання { #deploy }
Тепер розгорніть свій застосунок **однією командою**:
<div class="termy"> <div class="termy">
@ -36,6 +16,8 @@ Deploying to FastAPI Cloud...
</div> </div>
CLI автоматично визначить ваш застосунок FastAPI та розгорне його у хмарі. Якщо ви не увійшли, ваш браузер відкриється, щоб завершити процес автентифікації.
Ось і все! Тепер ви можете отримати доступ до свого застосунку за цим URL. ✨ Ось і все! Тепер ви можете отримати доступ до свого застосунку за цим URL. ✨
## Про FastAPI Cloud { #about-fastapi-cloud } ## Про FastAPI Cloud { #about-fastapi-cloud }

3
docs/uk/docs/deployment/manually.md

@ -56,13 +56,12 @@ FastAPI використовує стандарт для побудови Python
* [Hypercorn](https://hypercorn.readthedocs.io/): ASGI-сервер, сумісний з HTTP/2 і Trio, серед інших можливостей. * [Hypercorn](https://hypercorn.readthedocs.io/): ASGI-сервер, сумісний з HTTP/2 і Trio, серед інших можливостей.
* [Daphne](https://github.com/django/daphne): ASGI-сервер, створений для Django Channels. * [Daphne](https://github.com/django/daphne): ASGI-сервер, створений для Django Channels.
* [Granian](https://github.com/emmett-framework/granian): Rust HTTP-сервер для Python-застосунків. * [Granian](https://github.com/emmett-framework/granian): Rust HTTP-сервер для Python-застосунків.
* [NGINX Unit](https://unit.nginx.org/howto/fastapi/): NGINX Unit - легке й універсальне середовище виконання вебзастосунків.
## Серверна машина і серверна програма { #server-machine-and-server-program } ## Серверна машина і серверна програма { #server-machine-and-server-program }
Є невелика деталь щодо назв, яку варто пам'ятати. 💡 Є невелика деталь щодо назв, яку варто пам'ятати. 💡
Слово «**сервер**» зазвичай означає і віддалений/хмарний комп'ютер (фізична або віртуальна машина), і програму, що працює на цій машині (наприклад, Uvicorn). Слово «сервер» зазвичай означає і віддалений/хмарний комп'ютер (фізична або віртуальна машина), і програму, що працює на цій машині (наприклад, Uvicorn).
Майте на увазі, що коли ви бачите слово «сервер» загалом, воно може стосуватися будь-якого з цих двох значень. Майте на увазі, що коли ви бачите слово «сервер» загалом, воно може стосуватися будь-якого з цих двох значень.

2
docs/uk/docs/deployment/server-workers.md

@ -17,7 +17,7 @@
Тут я покажу, як використовувати Uvicorn із процесами-працівниками за допомогою команди `fastapi` або безпосередньо команди `uvicorn`. Тут я покажу, як використовувати Uvicorn із процесами-працівниками за допомогою команди `fastapi` або безпосередньо команди `uvicorn`.
/// info | Інформація /// note | Примітка
Якщо ви використовуєте контейнери, наприклад з Docker або Kubernetes, я розповім про це більше в наступному розділі: [FastAPI у контейнерах - Docker](docker.md). Якщо ви використовуєте контейнери, наприклад з Docker або Kubernetes, я розповім про це більше в наступному розділі: [FastAPI у контейнерах - Docker](docker.md).

12
docs/uk/docs/how-to/extending-openapi.md

@ -25,9 +25,17 @@
- `openapi_version`: Версія специфікації OpenAPI, що використовується. Типово остання: `3.1.0`. - `openapi_version`: Версія специфікації OpenAPI, що використовується. Типово остання: `3.1.0`.
- `summary`: Короткий підсумок API. - `summary`: Короткий підсумок API.
- `description`: Опис вашого API; може містити markdown і буде показаний у документації. - `description`: Опис вашого API; може містити markdown і буде показаний у документації.
- `routes`: Список маршрутів, це кожна з зареєстрованих *операцій шляху*. Їх беруть з `app.routes`. - `routes`: Маршрути із застосунку, взяті з `app.routes`. FastAPI використовує їх для збирання зареєстрованих *операцій шляху*, включно з тими, що з підключених роутерів.
/// info | Інформація /// tip | Технічні деталі
`app.routes` - це нижчорівневе дерево маршрутів. Воно може містити кандидати маршрутів, які FastAPI внутрішньо використовує для підключених роутерів, а не лише кінцеві об'єкти `APIRoute`.
Ви все одно можете передати `app.routes` до `get_openapi()`. FastAPI обійде це дерево маршрутів, щоб зібрати фактичні операції шляху.
///
/// note | Примітка
Параметр `summary` доступний в OpenAPI 3.1.0 і вище, підтримується FastAPI 0.99.0 і вище. Параметр `summary` доступний в OpenAPI 3.1.0 і вище, підтримується FastAPI 0.99.0 і вище.

4
docs/uk/docs/how-to/separate-openapi-schemas.md

@ -1,6 +1,6 @@
# Окремі схеми OpenAPI для введення та виведення, чи ні { #separate-openapi-schemas-for-input-and-output-or-not } # Окремі схеми OpenAPI для введення та виведення, чи ні { #separate-openapi-schemas-for-input-and-output-or-not }
Відколи вийшов **Pydantic v2**, згенерований OpenAPI став трохи точнішим і більш коректним, ніж раніше. 😎 Відколи вийшов **Pydantic v2**, згенерований OpenAPI став трохи точнішим і більш **коректним**, ніж раніше. 😎
Насправді подекуди буде навіть **дві схеми JSON** в OpenAPI для тієї самої моделі Pydantic: для введення та для виведення - залежно від наявності значень за замовчуванням. Насправді подекуди буде навіть **дві схеми JSON** в OpenAPI для тієї самої моделі Pydantic: для введення та для виведення - залежно від наявності значень за замовчуванням.
@ -84,7 +84,7 @@
У такому разі ви можете вимкнути цю можливість у **FastAPI** параметром `separate_input_output_schemas=False`. У такому разі ви можете вимкнути цю можливість у **FastAPI** параметром `separate_input_output_schemas=False`.
/// info | Інформація /// note | Примітка
Підтримку `separate_input_output_schemas` додано у FastAPI `0.102.0`. 🤓 Підтримку `separate_input_output_schemas` додано у FastAPI `0.102.0`. 🤓

6
docs/uk/docs/index.md

@ -492,9 +492,7 @@ item: Item
### Розгортання застосунку (необовʼязково) { #deploy-your-app-optional } ### Розгортання застосунку (необовʼязково) { #deploy-your-app-optional }
За бажання ви можете розгорнути ваш застосунок FastAPI у [FastAPI Cloud](https://fastapicloud.com), перейдіть і приєднайтеся до списку очікування, якщо ви ще цього не зробили. 🚀 За бажання ви можете розгорнути ваш застосунок FastAPI у [FastAPI Cloud](https://fastapicloud.com) однією командою. 🚀
Якщо у вас вже є обліковий запис **FastAPI Cloud** (ми запросили вас зі списку очікування 😉), ви можете розгорнути ваш застосунок однією командою.
<div class="termy"> <div class="termy">
@ -510,6 +508,8 @@ Deploying to FastAPI Cloud...
</div> </div>
CLI автоматично визначить ваш застосунок FastAPI і розгорне його в хмарі. Якщо ви не ввійшли в обліковий запис, ваш браузер відкриється для завершення процесу автентифікації.
Ось і все! Тепер ви можете отримати доступ до вашого застосунку за цією URL-адресою. ✨ Ось і все! Тепер ви можете отримати доступ до вашого застосунку за цією URL-адресою. ✨
#### Про FastAPI Cloud { #about-fastapi-cloud } #### Про FastAPI Cloud { #about-fastapi-cloud }

32
docs/uk/docs/tutorial/bigger-applications.md

@ -382,11 +382,11 @@ from .routers.users import router
{* ../../docs_src/bigger_applications/app_an_py310/main.py hl[10:11] title["app/main.py"] *} {* ../../docs_src/bigger_applications/app_an_py310/main.py hl[10:11] title["app/main.py"] *}
/// note | Примітка /// note | Технічні деталі
`users.router` містить `APIRouter` у файлі `app/routers/users.py`. FastAPI зберігає оригінальний `APIRouter` і його `APIRoute` активними після включення router'а до основного застосунку.
А `items.router` містить `APIRouter` у файлі `app/routers/items.py`. Це означає, що користувацькі підкласи `APIRouter` і `APIRoute` і надалі братимуть участь після включення router'а.
/// ///
@ -394,19 +394,11 @@ from .routers.users import router
Це включить усі маршрути з цього router'а як частину застосунку. Це включить усі маршрути з цього router'а як частину застосунку.
/// note | Технічні деталі
Фактично, всередині для кожної *операції шляху*, оголошеної в `APIRouter`, буде створена окрема *операція шляху*.
Тобто за лаштунками все працюватиме так, ніби це один і той самий застосунок.
///
/// tip | Порада /// tip | Порада
Вам не потрібно перейматися продуктивністю під час включення router'ів. Вам не потрібно перейматися продуктивністю під час включення router'ів.
Це займе мікросекунди і відбуватиметься лише під час запуску. Це спроєктовано як легковагове рішення і не додає накладних витрат до кожного запиту.
Тож це не вплине на продуктивність. ⚡ Тож це не вплине на продуктивність. ⚡
@ -461,7 +453,7 @@ from .routers.users import router
Це тому, що ми хочемо включати їхні *операції шляху* в схему OpenAPI та інтерфейси користувача. Це тому, що ми хочемо включати їхні *операції шляху* в схему OpenAPI та інтерфейси користувача.
Оскільки ми не можемо просто ізолювати їх і «змонтувати» незалежно від решти, *операції шляху* «клонуються» (створюються заново), а не включаються безпосередньо. FastAPI зберігає оригінальні router'и та операції шляху активними й поєднує префікси router'ів, залежності, мітки, відповіді та інші метадані під час обробки запитів і генерації OpenAPI.
/// ///
@ -532,4 +524,16 @@ $ fastapi dev
router.include_router(other_router) router.include_router(other_router)
``` ```
Переконайтеся, що ви робите це до включення `router` в застосунок `FastAPI`, щоб *операції шляху* з `other_router` також були включені. Ви можете зробити це до або після включення `router` у застосунок `FastAPI`. FastAPI все одно включить *операції шляху* з `other_router` у маршрутизацію та OpenAPI.
Те саме стосується *операцій шляху*, доданих пізніше до router'ів. Вони також будуть видимі через попереднє включення.
/// warning | Технічні деталі
Уникайте прямої мутації `router.routes` після включення router'а. FastAPI розглядає включення router'а як «живе», тому оригінальний router і його маршрути залишаються частиною маршрутизації та генерації OpenAPI.
Використовуйте задокументовані API, такі як декоратори *операцій шляху* і `.include_router()`, щоб додавати маршрути та router'и.
Сприймайте `router.routes` як нижчорівневе дерево маршрутів, яке може містити визначення маршрутів і включені router'и, і уникайте покладатися на нього як на плаский список кінцевих *операцій шляху*.
///

4
docs/uk/docs/tutorial/body-multiple-params.md

@ -111,7 +111,7 @@ q: str | None = None
{* ../../docs_src/body_multiple_params/tutorial004_an_py310.py hl[28] *} {* ../../docs_src/body_multiple_params/tutorial004_an_py310.py hl[28] *}
/// info | Інформація /// note | Примітка
`Body` також має всі ті самі додаткові параметри валідації та метаданих, що й `Query`, `Path` та інші, які ви побачите пізніше. `Body` також має всі ті самі додаткові параметри валідації та метаданих, що й `Query`, `Path` та інші, які ви побачите пізніше.
@ -126,7 +126,7 @@ q: str | None = None
Але якщо ви хочете, щоб він очікував JSON з ключем `item`, а всередині нього - вміст моделі, як це відбувається, коли ви оголошуєте додаткові параметри тіла, ви можете використати спеціальний параметр `Body` - `embed`: Але якщо ви хочете, щоб він очікував JSON з ключем `item`, а всередині нього - вміст моделі, як це відбувається, коли ви оголошуєте додаткові параметри тіла, ви можете використати спеціальний параметр `Body` - `embed`:
```Python ```Python
item: Item = Body(embed=True) item: Annotated[Item, Body(embed=True)]
``` ```
як у прикладі: як у прикладі:

4
docs/uk/docs/tutorial/body-nested-models.md

@ -136,7 +136,7 @@ my_list: list[str]
} }
``` ```
/// info | Інформація /// note | Примітка
Зверніть увагу, що тепер ключ `images` містить список об'єктів зображень. Зверніть увагу, що тепер ключ `images` містить список об'єктів зображень.
@ -148,7 +148,7 @@ my_list: list[str]
{* ../../docs_src/body_nested_models/tutorial007_py310.py hl[7,12,18,21,25] *} {* ../../docs_src/body_nested_models/tutorial007_py310.py hl[7,12,18,21,25] *}
/// info | Інформація /// note | Примітка
Зверніть увагу, що в моделі `Offer` є список `Item`ів, які, своєю чергою, можуть мати необов'язковий список `Image`ів. Зверніть увагу, що в моделі `Offer` є список `Item`ів, які, своєю чергою, можуть мати необов'язковий список `Image`ів.

2
docs/uk/docs/tutorial/body.md

@ -8,7 +8,7 @@
Щоб оголосити тіло **запиту**, ви використовуєте [Pydantic](https://docs.pydantic.dev/) моделі з усією їх потужністю та перевагами. Щоб оголосити тіло **запиту**, ви використовуєте [Pydantic](https://docs.pydantic.dev/) моделі з усією їх потужністю та перевагами.
/// info | Інформація /// note | Примітка
Щоб надіслати дані, ви повинні використовувати один із: `POST` (більш поширений), `PUT`, `DELETE` або `PATCH`. Щоб надіслати дані, ви повинні використовувати один із: `POST` (більш поширений), `PUT`, `DELETE` або `PATCH`.

6
docs/uk/docs/tutorial/cookie-param-models.md

@ -32,13 +32,13 @@
<img src="/img/tutorial/cookie-param-models/image01.png"> <img src="/img/tutorial/cookie-param-models/image01.png">
</div> </div>
/// info | Інформація /// note | Примітка
Майте на увазі, що оскільки **браузери обробляють cookies** особливим чином і «за лаштунками», вони **не** дозволяють **JavaScript** легко з ними працювати. Майте на увазі, що оскільки **браузери обробляють cookies** особливим чином і «за лаштунками», вони **не** дозволяють **JavaScript** легко з ними працювати.
Якщо ви зайдете до **інтерфейсу документації API** за адресою `/docs`, ви зможете побачити **документацію** для cookies у ваших *операціях шляху*. Якщо ви зайдете до **інтерфейсу документації API** за адресою `/docs`, ви зможете побачити **документацію** для cookies у ваших *операціях шляху*.
Але навіть якщо ви заповните дані й натиснете "Execute", оскільки інтерфейс документації працює з **JavaScript**, cookies не будуть відправлені, і ви побачите **помилку**, ніби ви не ввели жодних значень. Але навіть якщо ви **заповните дані** й натиснете "Execute", оскільки інтерфейс документації працює з **JavaScript**, cookies не будуть відправлені, і ви побачите **помилку**, ніби ви не ввели жодних значень.
/// ///
@ -73,4 +73,4 @@
## Підсумок { #summary } ## Підсумок { #summary }
Ви можете використовувати **Pydantic-моделі** для оголошення <dfn title="Візьміть останнє печиво перед тим, як підете. 🍪">**cookies**</dfn> у **FastAPI**. 😎 Ви можете використовувати **Pydantic-моделі** для оголошення <dfn title="Візьміть останнє печиво перед тим, як підете. 🍪">**кукі**</dfn> у **FastAPI**. 😎

4
docs/uk/docs/tutorial/cookie-params.md

@ -24,13 +24,13 @@
/// ///
/// info /// note
Для визначення кукі ви маєте використовувати `Cookie`, тому що в іншому випадку параметри будуть інтерпретовані як параметри запиту. Для визначення кукі ви маєте використовувати `Cookie`, тому що в іншому випадку параметри будуть інтерпретовані як параметри запиту.
/// ///
/// info /// note
Майте на увазі, що оскільки **браузери обробляють кукі** спеціальним чином і за лаштунками, вони **не** дозволяють **JavaScript** легко взаємодіяти з ними. Майте на увазі, що оскільки **браузери обробляють кукі** спеціальним чином і за лаштунками, вони **не** дозволяють **JavaScript** легко взаємодіяти з ними.

2
docs/uk/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md

@ -28,7 +28,7 @@
/// ///
/// info | Інформація /// note | Примітка
У цьому прикладі ми використовуємо вигадані власні заголовки `X-Key` і `X-Token`. У цьому прикладі ми використовуємо вигадані власні заголовки `X-Key` і `X-Token`.

2
docs/uk/docs/tutorial/dependencies/dependencies-with-yield.md

@ -170,7 +170,7 @@ participant tasks as Background tasks
end end
``` ```
/// info | Інформація /// note | Примітка
Лише **одна відповідь** буде надіслана клієнту. Це може бути одна з помилкових відповідей або відповідь від *операції шляху*. Лише **одна відповідь** буде надіслана клієнту. Це може бути одна з помилкових відповідей або відповідь від *операції шляху*.

6
docs/uk/docs/tutorial/dependencies/index.md

@ -51,7 +51,7 @@
Потім вона просто повертає `dict`, що містить ці значення. Потім вона просто повертає `dict`, що містить ці значення.
/// info | Інформація /// note | Примітка
FastAPI додав підтримку `Annotated` (і почав її рекомендувати) у версії 0.95.0. FastAPI додав підтримку `Annotated` (і почав її рекомендувати) у версії 0.95.0.
@ -106,7 +106,7 @@ common_parameters --> read_users
Таким чином ви пишете спільний код один раз, а **FastAPI** подбає про його виклик для ваших *операцій шляху*. Таким чином ви пишете спільний код один раз, а **FastAPI** подбає про його виклик для ваших *операцій шляху*.
/// check | Перевірте /// tip | Порада
Зверніть увагу, що вам не потрібно створювати спеціальний клас і передавати його кудись у **FastAPI**, щоб «зареєструвати» його чи щось подібне. Зверніть увагу, що вам не потрібно створювати спеціальний клас і передавати його кудись у **FastAPI**, щоб «зареєструвати» його чи щось подібне.
@ -138,7 +138,7 @@ commons: Annotated[dict, Depends(common_parameters)]
Залежності продовжать працювати як очікується, і **найкраще** те, що **інформація про типи буде збережена**, а це означає, що ваш редактор зможе й надалі надавати **автозаповнення**, **помилки в рядку** тощо. Те саме і для інших інструментів, як-от `mypy`. Залежності продовжать працювати як очікується, і **найкраще** те, що **інформація про типи буде збережена**, а це означає, що ваш редактор зможе й надалі надавати **автозаповнення**, **помилки в рядку** тощо. Те саме і для інших інструментів, як-от `mypy`.
Це буде особливо корисно у **великій кодовій базі**, де ви використовуєте **одні й ті самі залежності** знову і знову в **багатьох *операціях шляху***. Це буде особливо корисно у **великій кодовій базі**, де ви використовуєте **одні й ті ж залежності** знову і знову в **багатьох *операціях шляху***.
## Бути `async` чи не бути `async` { #to-async-or-not-to-async } ## Бути `async` чи не бути `async` { #to-async-or-not-to-async }

10
docs/uk/docs/tutorial/dependencies/sub-dependencies.md

@ -4,7 +4,7 @@
Вони можуть бути настільки глибокими, наскільки потрібно. Вони можуть бути настільки глибокими, наскільки потрібно.
FastAPI подбає про їх розв'язання. **FastAPI** подбає про їх розв'язання.
## Перша залежність «dependable» { #first-dependency-dependable } ## Перша залежність «dependable» { #first-dependency-dependable }
@ -35,11 +35,11 @@ FastAPI подбає про їх розв'язання.
{* ../../docs_src/dependencies/tutorial005_an_py310.py hl[23] *} {* ../../docs_src/dependencies/tutorial005_an_py310.py hl[23] *}
/// info | Інформація /// note | Примітка
Зверніть увагу, що ми оголошуємо лише одну залежність у функції операції шляху — `query_or_cookie_extractor`. Зверніть увагу, що ми оголошуємо лише одну залежність у функції операції шляху — `query_or_cookie_extractor`.
Але FastAPI знатиме, що спочатку треба розв'язати `query_extractor`, щоб передати його результат у `query_or_cookie_extractor` під час виклику. Але **FastAPI** знатиме, що спочатку треба розв'язати `query_extractor`, щоб передати його результат у `query_or_cookie_extractor` під час виклику.
/// ///
@ -56,7 +56,7 @@ query_extractor --> query_or_cookie_extractor --> read_query
## Використання тієї ж залежності кілька разів { #using-the-same-dependency-multiple-times } ## Використання тієї ж залежності кілька разів { #using-the-same-dependency-multiple-times }
Якщо одна з ваших залежностей оголошена кілька разів для однієї операції шляху, наприклад, кілька залежностей мають спільну підзалежність, FastAPI знатиме, що цю підзалежність потрібно викликати лише один раз на запит. Якщо одна з ваших залежностей оголошена кілька разів для однієї операції шляху, наприклад, кілька залежностей мають спільну підзалежність, **FastAPI** знатиме, що цю підзалежність потрібно викликати лише один раз на запит.
І він збереже повернуте значення у <dfn title="Утиліта/система для збереження обчислених/згенерованих значень, щоб повторно використовувати їх замість повторного обчислення.">«кеш»</dfn> і передасть його всім «dependants», яким воно потрібне в цьому конкретному запиті, замість того щоб викликати залежність кілька разів для одного й того ж запиту. І він збереже повернуте значення у <dfn title="Утиліта/система для збереження обчислених/згенерованих значень, щоб повторно використовувати їх замість повторного обчислення.">«кеш»</dfn> і передасть його всім «dependants», яким воно потрібне в цьому конкретному запиті, замість того щоб викликати залежність кілька разів для одного й того ж запиту.
@ -88,7 +88,7 @@ async def needy_dependency(fresh_value: str = Depends(get_value, use_cache=False
## Підсумок { #recap } ## Підсумок { #recap }
Попри всі модні терміни, система впровадження залежностей досить проста. Попри всі модні терміни, система **впровадження залежностей** досить проста.
Це просто функції, які виглядають так само, як функції операцій шляху. Це просто функції, які виглядають так само, як функції операцій шляху.

38
docs/uk/docs/tutorial/first-steps.md

@ -180,7 +180,7 @@ entrypoint = "backend.main:app"
from backend.main import 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 app, який слід використовувати: Ви також можете передати шлях до файлу в команду `fastapi dev`, і вона вгадає обʼєкт FastAPI app, який слід використовувати:
@ -188,29 +188,19 @@ from backend.main import app
$ fastapi dev main.py $ fastapi dev main.py
``` ```
Але вам доведеться щоразу памʼятати передавати правильний шлях під час виклику команди `fastapi`. Або ви також можете передати параметр `--entrypoint` команді `fastapi dev`:
Крім того, інші інструменти можуть не знайти його, наприклад [Розширення 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">
```console ```console
$ fastapi login $ fastapi dev --entrypoint main:app
You are logged in to FastAPI Cloud 🚀
``` ```
</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"> <div class="termy">
@ -226,6 +216,8 @@ Deploying to FastAPI Cloud...
</div> </div>
CLI автоматично визначить ваш застосунок FastAPI і розгорне його в хмарі. Якщо ви не ввійшли, ваш браузер відкриється для завершення процесу автентифікації.
Ось і все! Тепер ви можете отримати доступ до вашого застосунку за цим URL. ✨ Ось і все! Тепер ви можете отримати доступ до вашого застосунку за цим URL. ✨
## Підібʼємо підсумки, крок за кроком { #recap-step-by-step } ## Підібʼємо підсумки, крок за кроком { #recap-step-by-step }
@ -270,7 +262,7 @@ https://example.com/items/foo
/items/foo /items/foo
``` ```
/// info /// note | Примітка
«Шлях» також зазвичай називають «ендпоінтом» або «маршрутом». «Шлях» також зазвичай називають «ендпоінтом» або «маршрутом».
@ -322,7 +314,7 @@ https://example.com/items/foo
* шляху `/` * шляху `/`
* використовуючи <dfn title="HTTP метод GET"><code>get</code> операція</dfn> * використовуючи <dfn title="HTTP метод GET"><code>get</code> операція</dfn>
/// info | `@decorator` Інформація /// note | `@decorator` Інформація
Синтаксис `@something` у Python називається «декоратором». Синтаксис `@something` у Python називається «декоратором».
@ -349,7 +341,7 @@ https://example.com/items/foo
* `@app.patch()` * `@app.patch()`
* `@app.trace()` * `@app.trace()`
/// tip /// tip | Порада
Ви можете використовувати кожну операцію (HTTP-метод) як забажаєте. Ви можете використовувати кожну операцію (HTTP-метод) як забажаєте.
@ -383,7 +375,7 @@ https://example.com/items/foo
{* ../../docs_src/first_steps/tutorial003_py310.py hl[7] *} {* ../../docs_src/first_steps/tutorial003_py310.py hl[7] *}
/// note /// note | Примітка
Якщо ви не знаєте різницю, подивіться [Асинхронність: *«Поспішаєте?»*](../async.md#in-a-hurry). Якщо ви не знаєте різницю, подивіться [Асинхронність: *«Поспішаєте?»*](../async.md#in-a-hurry).

18
docs/uk/docs/tutorial/metadata.md

@ -1,6 +1,6 @@
# Метадані та URL-адреси документації { #metadata-and-docs-urls } # Метадані та URL-адреси документації { #metadata-and-docs-urls }
Ви можете налаштувати кілька конфігурацій метаданих у Вашому додатку **FastAPI**. Ви можете налаштувати кілька конфігурацій метаданих у вашому додатку **FastAPI**.
## Метадані для API { #metadata-for-api } ## Метадані для API { #metadata-for-api }
@ -11,7 +11,7 @@
| `title` | `str` | Назва API. | | `title` | `str` | Назва API. |
| `summary` | `str` | Короткий підсумок API. <small>Доступно з OpenAPI 3.1.0, FastAPI 0.99.0.</small> | | `summary` | `str` | Короткий підсумок API. <small>Доступно з OpenAPI 3.1.0, FastAPI 0.99.0.</small> |
| `description` | `str` | Короткий опис API. Може використовувати Markdown. | | `description` | `str` | Короткий опис API. Може використовувати Markdown. |
| `version` | `string` | Версія API. Це версія Вашого додатка, а не OpenAPI. Наприклад, `2.5.0`. | | `version` | `string` | Версія API. Це версія вашого додатка, а не OpenAPI. Наприклад, `2.5.0`. |
| `terms_of_service` | `str` | URL до умов використання API. Якщо вказано, має бути у форматі URL. | | `terms_of_service` | `str` | URL до умов використання API. Якщо вказано, має бути у форматі URL. |
| `contact` | `dict` | Інформація для контакту з опублікованим API. Може містити кілька полів. <details><summary><code>contact</code> поля</summary><table><thead><tr><th>Параметр</th><th>Тип</th><th>Опис</th></tr></thead><tbody><tr><td><code>name</code></td><td><code>str</code></td><td>Ідентифікаційне ім'я контактної особи або організації.</td></tr><tr><td><code>url</code></td><td><code>str</code></td><td>URL, що вказує на контактну інформацію. <strong>МАЄ</strong> бути у форматі URL.</td></tr><tr><td><code>email</code></td><td><code>str</code></td><td>Адреса електронної пошти контактної особи або організації. <strong>МАЄ</strong> бути у форматі адреси електронної пошти.</td></tr></tbody></table></details> | | `contact` | `dict` | Інформація для контакту з опублікованим API. Може містити кілька полів. <details><summary><code>contact</code> поля</summary><table><thead><tr><th>Параметр</th><th>Тип</th><th>Опис</th></tr></thead><tbody><tr><td><code>name</code></td><td><code>str</code></td><td>Ідентифікаційне ім'я контактної особи або організації.</td></tr><tr><td><code>url</code></td><td><code>str</code></td><td>URL, що вказує на контактну інформацію. <strong>МАЄ</strong> бути у форматі URL.</td></tr><tr><td><code>email</code></td><td><code>str</code></td><td>Адреса електронної пошти контактної особи або організації. <strong>МАЄ</strong> бути у форматі адреси електронної пошти.</td></tr></tbody></table></details> |
| `license_info` | `dict` | Інформація про ліцензію для опублікованого API. Може містити кілька полів. <details><summary><code>license_info</code> поля</summary><table><thead><tr><th>Параметр</th><th>Тип</th><th>Опис</th></tr></thead><tbody><tr><td><code>name</code></td><td><code>str</code></td><td><strong>ОБОВ'ЯЗКОВО</strong> (якщо встановлено <code>license_info</code>). Назва ліцензії для API.</td></tr><tr><td><code>identifier</code></td><td><code>str</code></td><td>Ліцензійний вираз за [SPDX](https://spdx.org/licenses/) для API. Поле <code>identifier</code> взаємовиключне з полем <code>url</code>. <small>Доступно з OpenAPI 3.1.0, FastAPI 0.99.0.</small></td></tr><tr><td><code>url</code></td><td><code>str</code></td><td>URL до ліцензії, яка використовується для API. <strong>МАЄ</strong> бути у форматі URL.</td></tr></tbody></table></details> | | `license_info` | `dict` | Інформація про ліцензію для опублікованого API. Може містити кілька полів. <details><summary><code>license_info</code> поля</summary><table><thead><tr><th>Параметр</th><th>Тип</th><th>Опис</th></tr></thead><tbody><tr><td><code>name</code></td><td><code>str</code></td><td><strong>ОБОВ'ЯЗКОВО</strong> (якщо встановлено <code>license_info</code>). Назва ліцензії для API.</td></tr><tr><td><code>identifier</code></td><td><code>str</code></td><td>Ліцензійний вираз за [SPDX](https://spdx.org/licenses/) для API. Поле <code>identifier</code> взаємовиключне з полем <code>url</code>. <small>Доступно з OpenAPI 3.1.0, FastAPI 0.99.0.</small></td></tr><tr><td><code>url</code></td><td><code>str</code></td><td>URL до ліцензії, яка використовується для API. <strong>МАЄ</strong> бути у форматі URL.</td></tr></tbody></table></details> |
@ -32,7 +32,7 @@
## Ідентифікатор ліцензії { #license-identifier } ## Ідентифікатор ліцензії { #license-identifier }
З початку використання OpenAPI 3.1.0 та FastAPI 0.99.0 Ви також можете налаштувати `license_info` за допомогою `identifier` замість `url`. З початку використання OpenAPI 3.1.0 та FastAPI 0.99.0 ви також можете налаштувати `license_info` за допомогою `identifier` замість `url`.
Наприклад: Наприклад:
@ -46,7 +46,7 @@
Кожен словник може містити: Кожен словник може містити:
* `name` (**обов'язково**): `str` з тією ж назвою тегу, яку Ви використовуєте у параметрі `tags` у Ваших *операціях шляху* та `APIRouter`s. * `name` (**обов'язково**): `str` з тією ж назвою тегу, яку ви використовуєте у параметрі `tags` у ваших *операціях шляху* та `APIRouter`s.
* `description`: `str` з коротким описом тегу. Може містити Markdown і буде показано в інтерфейсі документації. * `description`: `str` з коротким описом тегу. Може містити Markdown і буде показано в інтерфейсі документації.
* `externalDocs`: `dict`, який описує зовнішню документацію з такими полями: * `externalDocs`: `dict`, який описує зовнішню документацію з такими полями:
* `description`: `str` з коротким описом зовнішньої документації. * `description`: `str` з коротким описом зовнішньої документації.
@ -64,7 +64,7 @@
/// tip | Порада /// tip | Порада
Вам не потрібно додавати метадані для всіх тегів, які Ви використовуєте. Вам не потрібно додавати метадані для всіх тегів, які ви використовуєте.
/// ///
@ -74,7 +74,7 @@
{* ../../docs_src/metadata/tutorial004_py310.py hl[21,26] *} {* ../../docs_src/metadata/tutorial004_py310.py hl[21,26] *}
/// info | Інформація /// note | Примітка
Детальніше про теги читайте в розділі [Конфігурація операції шляху](path-operation-configuration.md#tags). Детальніше про теги читайте в розділі [Конфігурація операції шляху](path-operation-configuration.md#tags).
@ -82,7 +82,7 @@
### Перевірте документацію { #check-the-docs } ### Перевірте документацію { #check-the-docs }
Тепер, якщо Ви перевірите документацію, вона покаже всі додаткові метадані: Тепер, якщо ви перевірите документацію, вона покаже всі додаткові метадані:
<img src="/img/tutorial/metadata/image02.png"> <img src="/img/tutorial/metadata/image02.png">
@ -96,13 +96,13 @@
За замовчуванням схема OpenAPI надається за адресою `/openapi.json`. За замовчуванням схема OpenAPI надається за адресою `/openapi.json`.
Але Ви можете налаштувати це за допомогою параметра `openapi_url`. Але ви можете налаштувати це за допомогою параметра `openapi_url`.
Наприклад, щоб налаштувати його на `/api/v1/openapi.json`: Наприклад, щоб налаштувати його на `/api/v1/openapi.json`:
{* ../../docs_src/metadata/tutorial002_py310.py hl[3] *} {* ../../docs_src/metadata/tutorial002_py310.py hl[3] *}
Якщо Ви хочете повністю вимкнути схему OpenAPI, Ви можете встановити `openapi_url=None`, це також вимкне інтерфейси документації, які її використовують. Якщо ви хочете повністю вимкнути схему OpenAPI, ви можете встановити `openapi_url=None`, це також вимкне інтерфейси документації, які її використовують.
## URL-адреси документації { #docs-urls } ## URL-адреси документації { #docs-urls }

4
docs/uk/docs/tutorial/path-operation-configuration.md

@ -72,13 +72,13 @@ FastAPI підтримує це так само, як і зі звичайним
{* ../../docs_src/path_operation_configuration/tutorial005_py310.py hl[18] *} {* ../../docs_src/path_operation_configuration/tutorial005_py310.py hl[18] *}
/// info | Інформація /// note | Примітка
Зверніть увагу, що `response_description` стосується саме відповіді, а `description` стосується «операції шляху» загалом. Зверніть увагу, що `response_description` стосується саме відповіді, а `description` стосується «операції шляху» загалом.
/// ///
/// check | Перевірте /// tip | Порада
OpenAPI визначає, що кожна «операція шляху» потребує опису відповіді. OpenAPI визначає, що кожна «операція шляху» потребує опису відповіді.

4
docs/uk/docs/tutorial/path-params-numeric-validations.md

@ -8,7 +8,7 @@
{* ../../docs_src/path_params_numeric_validations/tutorial001_an_py310.py hl[1,3] *} {* ../../docs_src/path_params_numeric_validations/tutorial001_an_py310.py hl[1,3] *}
/// info | Інформація /// note | Примітка
FastAPI додав підтримку `Annotated` (і почав рекомендувати його використання) у версії 0.95.0. FastAPI додав підтримку `Annotated` (і почав рекомендувати його використання) у версії 0.95.0.
@ -131,7 +131,7 @@ Python нічого не зробить із цією `*`, але розпізн
* `lt`: `l`ess `t`han * `lt`: `l`ess `t`han
* `le`: `l`ess than or `e`qual * `le`: `l`ess than or `e`qual
/// info | Інформація /// note | Примітка
`Query`, `Path` та інші класи, які ви побачите пізніше, є підкласами спільного класу `Param`. `Query`, `Path` та інші класи, які ви побачите пізніше, є підкласами спільного класу `Param`.

8
docs/uk/docs/tutorial/path-params.md

@ -20,7 +20,7 @@
У цьому випадку `item_id` оголошено як `int`. У цьому випадку `item_id` оголошено як `int`.
/// check | Перевірте /// tip | Порада
Це дасть вам підтримку редактора всередині функції з перевірками помилок, автодоповненням тощо. Це дасть вам підтримку редактора всередині функції з перевірками помилок, автодоповненням тощо.
@ -34,7 +34,7 @@
{"item_id":3} {"item_id":3}
``` ```
/// check | Перевірте /// tip | Порада
Зверніть увагу, що значення, яке отримала (і повернула) ваша функція, — це `3`, як Python `int`, а не рядок `"3"`. Зверніть увагу, що значення, яке отримала (і повернула) ваша функція, — це `3`, як Python `int`, а не рядок `"3"`.
@ -66,7 +66,7 @@
Та сама помилка з’явиться, якщо ви передасте `float` замість `int`, як у: [http://127.0.0.1:8000/items/4.2](http://127.0.0.1:8000/items/4.2) Та сама помилка з’явиться, якщо ви передасте `float` замість `int`, як у: [http://127.0.0.1:8000/items/4.2](http://127.0.0.1:8000/items/4.2)
/// check | Перевірте /// tip | Порада
Отже, з тим самим оголошенням типу в Python **FastAPI** надає вам валідацію даних. Отже, з тим самим оголошенням типу в Python **FastAPI** надає вам валідацію даних.
@ -82,7 +82,7 @@
<img src="/img/tutorial/path-params/image01.png"> <img src="/img/tutorial/path-params/image01.png">
/// check | Перевірте /// tip | Порада
Знову ж таки, лише з тим самим оголошенням типу в Python **FastAPI** надає вам автоматичну, інтерактивну документацію (з інтеграцією Swagger UI). Знову ж таки, лише з тим самим оголошенням типу в Python **FastAPI** надає вам автоматичну, інтерактивну документацію (з інтеграцією Swagger UI).

4
docs/uk/docs/tutorial/query-params-str-validations.md

@ -29,7 +29,7 @@ FastAPI знатиме, що значення `q` не є обов’язков
{* ../../docs_src/query_params_str_validations/tutorial002_an_py310.py hl[1,3] *} {* ../../docs_src/query_params_str_validations/tutorial002_an_py310.py hl[1,3] *}
/// info | Інформація /// note | Примітка
FastAPI додав підтримку `Annotated` (і почав рекомендувати його) у версії 0.95.0. FastAPI додав підтримку `Annotated` (і почав рекомендувати його) у версії 0.95.0.
@ -381,7 +381,7 @@ Pydantic також має [`BeforeValidator`](https://docs.pydantic.dev/latest/
{* ../../docs_src/query_params_str_validations/tutorial015_an_py310.py hl[5,16:19,24] *} {* ../../docs_src/query_params_str_validations/tutorial015_an_py310.py hl[5,16:19,24] *}
/// info | Інформація /// note | Примітка
Це доступно з версії Pydantic 2 або вище. 😎 Це доступно з версії Pydantic 2 або вище. 😎

2
docs/uk/docs/tutorial/query-params.md

@ -65,7 +65,7 @@ http://127.0.0.1:8000/items/?skip=20
У цьому випадку параметр функції `q` буде необов’язковим і за замовчуванням матиме значення `None`. У цьому випадку параметр функції `q` буде необов’язковим і за замовчуванням матиме значення `None`.
/// check | Перевірте /// tip | Порада
Також зверніть увагу, що **FastAPI** достатньо розумний, щоб визначити, що параметр шляху `item_id` є параметром шляху, а `q` — ні, отже, це параметр query. Також зверніть увагу, що **FastAPI** достатньо розумний, щоб визначити, що параметр шляху `item_id` є параметром шляху, а `q` — ні, отже, це параметр query.

4
docs/uk/docs/tutorial/request-files.md

@ -2,7 +2,7 @@
Ви можете визначити файли, які будуть завантажуватися клієнтом, використовуючи `File`. Ви можете визначити файли, які будуть завантажуватися клієнтом, використовуючи `File`.
/// info | Інформація /// note | Примітка
Щоб отримувати завантажені файли, спочатку встановіть [`python-multipart`](https://github.com/Kludex/python-multipart). Щоб отримувати завантажені файли, спочатку встановіть [`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] *} {* ../../docs_src/request_files/tutorial001_an_py310.py hl[9] *}
/// info | Інформація /// note | Примітка
`File` — це клас, який безпосередньо успадковує `Form`. `File` — це клас, який безпосередньо успадковує `Form`.

6
docs/uk/docs/tutorial/request-form-models.md

@ -2,7 +2,7 @@
У FastAPI ви можете використовувати **Pydantic-моделі** для оголошення **полів форми**. У FastAPI ви можете використовувати **Pydantic-моделі** для оголошення **полів форми**.
/// info /// note | Примітка
Щоб використовувати форми, спочатку встановіть [`python-multipart`](https://github.com/Kludex/python-multipart). Щоб використовувати форми, спочатку встановіть [`python-multipart`](https://github.com/Kludex/python-multipart).
@ -14,7 +14,7 @@ $ pip install python-multipart
/// ///
/// note /// note | Примітка
Це підтримується, починаючи з FastAPI версії `0.113.0`. 🤓 Це підтримується, починаючи з FastAPI версії `0.113.0`. 🤓
@ -40,7 +40,7 @@ $ pip install python-multipart
У деяких особливих випадках (ймовірно, не дуже поширених) ви можете **обмежити** поля форми лише тими, які були оголошені в Pydantic-моделі. І **заборонити** будь-які **додаткові** поля. У деяких особливих випадках (ймовірно, не дуже поширених) ви можете **обмежити** поля форми лише тими, які були оголошені в Pydantic-моделі. І **заборонити** будь-які **додаткові** поля.
/// note /// note | Примітка
Це підтримується, починаючи з FastAPI версії `0.114.0`. 🤓 Це підтримується, починаючи з FastAPI версії `0.114.0`. 🤓

2
docs/uk/docs/tutorial/request-forms-and-files.md

@ -2,7 +2,7 @@
Ви можете одночасно визначати файли та поля форми, використовуючи `File` і `Form`. Ви можете одночасно визначати файли та поля форми, використовуючи `File` і `Form`.
/// info | Інформація /// note | Примітка
Щоб отримувати завантажені файли та/або дані форми, спочатку встановіть [`python-multipart`](https://github.com/Kludex/python-multipart). Щоб отримувати завантажені файли та/або дані форми, спочатку встановіть [`python-multipart`](https://github.com/Kludex/python-multipart).

6
docs/uk/docs/tutorial/request-forms.md

@ -2,7 +2,7 @@
Коли вам потрібно отримувати поля форми замість JSON, ви можете використовувати `Form`. Коли вам потрібно отримувати поля форми замість JSON, ви можете використовувати `Form`.
/// info | Інформація /// note | Примітка
Щоб використовувати форми, спочатку встановіть [`python-multipart`](https://github.com/Kludex/python-multipart). Щоб використовувати форми, спочатку встановіть [`python-multipart`](https://github.com/Kludex/python-multipart).
@ -26,13 +26,13 @@ $ pip install python-multipart
{* ../../docs_src/request_forms/tutorial001_an_py310.py hl[9] *} {* ../../docs_src/request_forms/tutorial001_an_py310.py hl[9] *}
Наприклад, один зі способів використання специфікації OAuth2 (так званий «password flow») вимагає надсилати `username` та `password` як поля форми. Наприклад, один зі способів використання специфікації OAuth2 (так званий «потік паролю») вимагає надсилати `username` та `password` як поля форми.
<dfn title="специфікація">специфікація</dfn> вимагає, щоб ці поля мали точні назви `username` і `password` та надсилалися у вигляді полів форми, а не JSON. <dfn title="специфікація">специфікація</dfn> вимагає, щоб ці поля мали точні назви `username` і `password` та надсилалися у вигляді полів форми, а не JSON.
З `Form` ви можете оголошувати ті ж конфігурації, що і з `Body` (та `Query`, `Path`, `Cookie`), включаючи валідацію, приклади, псевдоніми (наприклад, `user-name` замість `username`) тощо. З `Form` ви можете оголошувати ті ж конфігурації, що і з `Body` (та `Query`, `Path`, `Cookie`), включаючи валідацію, приклади, псевдоніми (наприклад, `user-name` замість `username`) тощо.
/// info | Інформація /// note | Примітка
`Form` — це клас, який безпосередньо наслідується від `Body`. `Form` — це клас, який безпосередньо наслідується від `Body`.

6
docs/uk/docs/tutorial/response-model.md

@ -72,7 +72,7 @@ FastAPI використовуватиме цей `response_model` для вик
{* ../../docs_src/response_model/tutorial002_py310.py hl[7,9] *} {* ../../docs_src/response_model/tutorial002_py310.py hl[7,9] *}
/// info | Інформація /// note | Примітка
Щоб використовувати `EmailStr`, спочатку встановіть [`email-validator`](https://github.com/JoshData/python-email-validator). Щоб використовувати `EmailStr`, спочатку встановіть [`email-validator`](https://github.com/JoshData/python-email-validator).
@ -182,7 +182,7 @@ FastAPI виконує кілька внутрішніх операцій з Pyd
### Повернути Response напряму { #return-a-response-directly } ### Повернути Response напряму { #return-a-response-directly }
Найпоширенішим випадком буде [повернення Response напряму, як пояснюється пізніше у розширеній документації](../advanced/response-directly.md). Найпоширенішим випадком буде [повернення Response напряму, як пояснюється пізніше у просунутому посібнику користувача](../advanced/response-directly.md).
{* ../../docs_src/response_model/tutorial003_02_py310.py hl[8,10:11] *} {* ../../docs_src/response_model/tutorial003_02_py310.py hl[8,10:11] *}
@ -251,7 +251,7 @@ FastAPI виконує кілька внутрішніх операцій з Pyd
} }
``` ```
/// info | Інформація /// note | Примітка
Ви також можете використовувати: Ви також можете використовувати:

2
docs/uk/docs/tutorial/response-status-code.md

@ -18,7 +18,7 @@
Параметр `status_code` приймає число з HTTP кодом статусу. Параметр `status_code` приймає число з HTTP кодом статусу.
/// info | Інформація /// note | Примітка
`status_code` також може, як альтернативу, приймати `IntEnum`, наприклад, Python [`http.HTTPStatus`](https://docs.python.org/3/library/http.html#http.HTTPStatus). `status_code` також може, як альтернативу, приймати `IntEnum`, наприклад, Python [`http.HTTPStatus`](https://docs.python.org/3/library/http.html#http.HTTPStatus).

6
docs/uk/docs/tutorial/schema-extra-example.md

@ -24,7 +24,7 @@
/// ///
/// info | Інформація /// note | Примітка
OpenAPI 3.1.0 (який використовується починаючи з FastAPI 0.99.0) додав підтримку `examples`, що є частиною стандарту **Схеми JSON**. OpenAPI 3.1.0 (який використовується починаючи з FastAPI 0.99.0) додав підтримку `examples`, що є частиною стандарту **Схеми JSON**.
@ -155,7 +155,7 @@ OpenAPI також додала поля `example` і `examples` до інших
* `File()` * `File()`
* `Form()` * `Form()`
/// info | Інформація /// note | Примітка
Цей старий специфічний для OpenAPI параметр `examples` тепер називається `openapi_examples`, починаючи з FastAPI `0.103.0`. Цей старий специфічний для OpenAPI параметр `examples` тепер називається `openapi_examples`, починаючи з FastAPI `0.103.0`.
@ -171,7 +171,7 @@ OpenAPI також додала поля `example` і `examples` до інших
Це нове поле `examples` у Схемі JSON - це **просто `list`** прикладів, а не `dict` з додатковими метаданими, як в інших місцях OpenAPI (описаних вище). Це нове поле `examples` у Схемі JSON - це **просто `list`** прикладів, а не `dict` з додатковими метаданими, як в інших місцях OpenAPI (описаних вище).
/// info | Інформація /// note | Примітка
Навіть після релізу OpenAPI 3.1.0 з цією новою простішою інтеграцією зі Схемою JSON, протягом певного часу Swagger UI, інструмент, який надає автоматичну документацію, не підтримував OpenAPI 3.1.0 (тепер підтримує, починаючи з версії 5.0.0 🎉). Навіть після релізу OpenAPI 3.1.0 з цією новою простішою інтеграцією зі Схемою JSON, протягом певного часу Swagger UI, інструмент, який надає автоматичну документацію, не підтримував OpenAPI 3.1.0 (тепер підтримує, починаючи з версії 5.0.0 🎉).

10
docs/uk/docs/tutorial/security/first-steps.md

@ -24,7 +24,7 @@
## Запустіть { #run-it } ## Запустіть { #run-it }
/// info | Інформація /// note | Примітка
Пакет [`python-multipart`](https://github.com/Kludex/python-multipart) автоматично встановлюється з **FastAPI**, коли ви виконуєте команду `pip install "fastapi[standard]"`. Пакет [`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"> <img src="/img/tutorial/security/image01.png">
/// check | Кнопка Authorize! /// tip | Кнопка Authorize!
У вас уже є нова блискуча кнопка «Authorize». У вас уже є нова блискуча кнопка «Authorize».
@ -118,7 +118,7 @@ OAuth2 був спроєктований так, щоб backend або API мо
У цьому прикладі ми використаємо **OAuth2** з потоком **Password**, використовуючи токен **Bearer**. Це робиться за допомогою класу `OAuth2PasswordBearer`. У цьому прикладі ми використаємо **OAuth2** з потоком **Password**, використовуючи токен **Bearer**. Це робиться за допомогою класу `OAuth2PasswordBearer`.
/// info | Інформація /// note | Примітка
«Bearer»-токен - не єдиний варіант. «Bearer»-токен - не єдиний варіант.
@ -148,7 +148,7 @@ OAuth2 був спроєктований так, щоб backend або API мо
Незабаром ми також створимо фактичну операцію шляху. Незабаром ми також створимо фактичну операцію шляху.
/// info | Інформація /// note | Примітка
Якщо ви дуже строгий «Pythonista», вам може не подобатися стиль імені параметра `tokenUrl` замість `token_url`. Якщо ви дуже строгий «Pythonista», вам може не подобатися стиль імені параметра `tokenUrl` замість `token_url`.
@ -176,7 +176,7 @@ oauth2_scheme(some, parameters)
**FastAPI** знатиме, що може використати цю залежність, щоб визначити «схему безпеки» в схемі OpenAPI (і в автоматичній документації API). **FastAPI** знатиме, що може використати цю залежність, щоб визначити «схему безпеки» в схемі OpenAPI (і в автоматичній документації API).
/// info | Технічні деталі /// note | Технічні деталі
**FastAPI** знатиме, що може використати клас `OAuth2PasswordBearer` (оголошений у залежності), щоб визначити схему безпеки в OpenAPI, тому що він наслідує `fastapi.security.oauth2.OAuth2`, який своєю чергою наслідує `fastapi.security.base.SecurityBase`. **FastAPI** знатиме, що може використати клас `OAuth2PasswordBearer` (оголошений у залежності), щоб визначити схему безпеки в OpenAPI, тому що він наслідує `fastapi.security.oauth2.OAuth2`, який своєю чергою наслідує `fastapi.security.base.SecurityBase`.

2
docs/uk/docs/tutorial/security/get-current-user.md

@ -52,7 +52,7 @@
/// ///
/// check | Перевірте /// tip | Порада
Те, як спроєктована ця система залежностей, дозволяє мати різні залежності (різні «залежні»), які всі повертають модель `User`. Те, як спроєктована ця система залежностей, дозволяє мати різні залежності (різні «залежні»), які всі повертають модель `User`.

4
docs/uk/docs/tutorial/security/oauth2-jwt.md

@ -42,7 +42,7 @@ $ pip install pyjwt
</div> </div>
/// info | Інформація /// note | Примітка
Якщо ви плануєте використовувати алгоритми цифрового підпису на кшталт RSA або ECDSA, слід встановити залежність криптобібліотеки `pyjwt[crypto]`. Якщо ви плануєте використовувати алгоритми цифрового підпису на кшталт RSA або ECDSA, слід встановити залежність криптобібліотеки `pyjwt[crypto]`.
@ -213,7 +213,7 @@ JWT може використовуватися й для інших речей,
Username: `johndoe` Username: `johndoe`
Password: `secret` Password: `secret`
/// check | Перевірте /// tip | Порада
Зверніть увагу, що ніде в коді немає відкритого пароля "`secret`", ми маємо лише хешовану версію. Зверніть увагу, що ніде в коді немає відкритого пароля "`secret`", ми маємо лише хешовану версію.

8
docs/uk/docs/tutorial/security/simple-oauth2.md

@ -32,7 +32,7 @@ OAuth2 визначає, що під час використання «пото
- `instagram_basic` використовується Facebook / Instagram. - `instagram_basic` використовується Facebook / Instagram.
- `https://www.googleapis.com/auth/drive` використовується Google. - `https://www.googleapis.com/auth/drive` використовується Google.
/// info | Інформація /// note | Примітка
У OAuth2 «scope» — це просто строка, що оголошує конкретний потрібний дозвіл. У OAuth2 «scope» — це просто строка, що оголошує конкретний потрібний дозвіл.
@ -72,7 +72,7 @@ OAuth2 визначає, що під час використання «пото
- Необов'язковим `client_id` (для нашого прикладу не потрібно). - Необов'язковим `client_id` (для нашого прикладу не потрібно).
- Необов'язковим `client_secret` (для нашого прикладу не потрібно). - Необов'язковим `client_secret` (для нашого прикладу не потрібно).
/// info | Інформація /// note | Примітка
`OAuth2PasswordRequestForm` — не спеціальний клас для **FastAPI**, як `OAuth2PasswordBearer`. `OAuth2PasswordRequestForm` — не спеціальний клас для **FastAPI**, як `OAuth2PasswordBearer`.
@ -144,7 +144,7 @@ UserInDB(
) )
``` ```
/// info | Інформація /// note | Примітка
Для повнішого пояснення `**user_dict` перегляньте [документацію для **Додаткових моделей**](../extra-models.md#about-user-in-dict). Для повнішого пояснення `**user_dict` перегляньте [документацію для **Додаткових моделей**](../extra-models.md#about-user-in-dict).
@ -196,7 +196,7 @@ UserInDB(
{* ../../docs_src/security/tutorial003_an_py310.py hl[58:66,69:74,94] *} {* ../../docs_src/security/tutorial003_an_py310.py hl[58:66,69:74,94] *}
/// info | Інформація /// note | Примітка
Додатковий заголовок `WWW-Authenticate` зі значенням `Bearer`, який ми тут повертаємо, також є частиною специфікації. Додатковий заголовок `WWW-Authenticate` зі значенням `Bearer`, який ми тут повертаємо, також є частиною специфікації.

12
docs/uk/docs/tutorial/server-sent-events.md

@ -4,7 +4,7 @@
Це подібно до [Потік JSON Lines](stream-json-lines.md), але використовує формат `text/event-stream`, який нативно підтримується браузерами через [API `EventSource`](https://developer.mozilla.org/en-US/docs/Web/API/EventSource). Це подібно до [Потік JSON Lines](stream-json-lines.md), але використовує формат `text/event-stream`, який нативно підтримується браузерами через [API `EventSource`](https://developer.mozilla.org/en-US/docs/Web/API/EventSource).
/// info | Інформація /// note | Примітка
Додано у FastAPI 0.135.0. Додано у FastAPI 0.135.0.
@ -81,7 +81,7 @@ FastAPI подбає про коректне виконання, щоб воно
## Сирі дані { #raw-data } ## Сирі дані { #raw-data }
Якщо потрібно надіслати дані **без** кодування в JSON, використовуйте `raw_data` замість `data`. Якщо потрібно надіслати дані без кодування в JSON, використовуйте `raw_data` замість `data`.
Це корисно для надсилання попередньо відформатованого тексту, рядків логів або спеціальних значень <dfn title="Значення, яке використовується для позначення особливої умови або стану">«значення-сторож»</dfn>, як-от `[DONE]`. Це корисно для надсилання попередньо відформатованого тексту, рядків логів або спеціальних значень <dfn title="Значення, яке використовується для позначення особливої умови або стану">«значення-сторож»</dfn>, як-от `[DONE]`.
@ -103,7 +103,7 @@ FastAPI подбає про коректне виконання, щоб воно
## SSE з POST { #sse-with-post } ## SSE з POST { #sse-with-post }
SSE працює з **будь-яким HTTP-методом**, не лише з `GET`. SSE працює з будь-яким HTTP-методом, не лише з `GET`.
Це корисно для протоколів на кшталт [MCP](https://modelcontextprotocol.io), які транслюють SSE через `POST`: Це корисно для протоколів на кшталт [MCP](https://modelcontextprotocol.io), які транслюють SSE через `POST`:
@ -113,8 +113,8 @@ SSE працює з **будь-яким HTTP-методом**, не лише з
FastAPI реалізує деякі найкращі практики SSE «з коробки». FastAPI реалізує деякі найкращі практики SSE «з коробки».
- Надсилати **коментар «keep alive» `ping`** кожні 15 секунд, коли не було жодного повідомлення, щоб запобігти закриттю з'єднання деякими проксі, як рекомендовано у [Специфікації HTML: Події, надіслані сервером](https://html.spec.whatwg.org/multipage/server-sent-events.html#authoring-notes). - Надсилати коментар «keep alive» `ping` кожні 15 секунд, коли не було жодного повідомлення, щоб запобігти закриттю з'єднання деякими проксі, як рекомендовано у [Специфікації HTML: Події, надіслані сервером](https://html.spec.whatwg.org/multipage/server-sent-events.html#authoring-notes).
- Встановити заголовок `Cache-Control: no-cache`, щоб **запобігти кешуванню** потоку. - Встановити заголовок `Cache-Control: no-cache`, щоб запобігти кешуванню потоку.
- Встановити спеціальний заголовок `X-Accel-Buffering: no`, щоб **запобігти буферизації** у деяких проксі, наприклад Nginx. - Встановити спеціальний заголовок `X-Accel-Buffering: no`, щоб запобігти буферизації у деяких проксі, наприклад Nginx.
Вам не потрібно нічого з цим робити, воно працює «з коробки». 🤓 Вам не потрібно нічого з цим робити, воно працює «з коробки». 🤓

4
docs/uk/docs/tutorial/stream-json-lines.md

@ -2,7 +2,7 @@
У вас може бути послідовність даних, яку ви хочете надсилати у **«потоці»**, це можна зробити за допомогою **JSON Lines**. У вас може бути послідовність даних, яку ви хочете надсилати у **«потоці»**, це можна зробити за допомогою **JSON Lines**.
/// info | Інформація /// note | Примітка
Додано в FastAPI 0.134.0. Додано в FastAPI 0.134.0.
@ -48,7 +48,7 @@ sequenceDiagram
Це дуже схоже на масив JSON (еквівалент списку Python), але замість того, щоб бути загорнутим у `[]` і мати `,` між елементами, тут є **по одному об’єкту JSON на рядок**, вони розділені символом нового рядка. Це дуже схоже на масив JSON (еквівалент списку Python), але замість того, щоб бути загорнутим у `[]` і мати `,` між елементами, тут є **по одному об’єкту JSON на рядок**, вони розділені символом нового рядка.
/// info | Інформація /// note | Примітка
Важливо те, що ваш застосунок зможе по черзі створювати кожен рядок, поки клієнт споживає попередні рядки. Важливо те, що ваш застосунок зможе по черзі створювати кожен рядок, поки клієнт споживає попередні рядки.

4
docs/uk/docs/tutorial/testing.md

@ -8,7 +8,7 @@
## Використання `TestClient` { #using-testclient } ## Використання `TestClient` { #using-testclient }
/// info | Інформація /// note | Примітка
Щоб використовувати `TestClient`, спочатку встановіть [`httpx`](https://www.python-httpx.org). Щоб використовувати `TestClient`, спочатку встановіть [`httpx`](https://www.python-httpx.org).
@ -144,7 +144,7 @@ $ pip install httpx
Докладніше про передачу даних у бекенд (за допомогою `httpx` або `TestClient`) можна знайти в [документації HTTPX](https://www.python-httpx.org). Докладніше про передачу даних у бекенд (за допомогою `httpx` або `TestClient`) можна знайти в [документації HTTPX](https://www.python-httpx.org).
/// info | Інформація /// note | Примітка
Зверніть увагу, що `TestClient` отримує дані, які можна конвертувати в JSON, а не Pydantic-моделі. Зверніть увагу, що `TestClient` отримує дані, які можна конвертувати в JSON, а не Pydantic-моделі.

Loading…
Cancel
Save