///
-/// check | Надихнуло **FastAPI** на
+/// tip | Надихнуло **FastAPI** на
Мати автоматичний веб-інтерфейс документації API.
Враховуючи простоту Flask, він здавався хорошим підходом для створення API. Наступним, що знайшов, був «Django REST Framework» для Flask.
-/// check | Надихнуло **FastAPI** на
+/// tip | Надихнуло **FastAPI** на
Бути мікрофреймворком. Зробити легким комбінування та поєднання необхідних інструментів та частин.
Зверніть увагу на схожість у `requests.get(...)` і `@app.get(...)`.
-/// check | Надихнуло **FastAPI** на
+/// tip | Надихнуло **FastAPI** на
* Мати простий та інтуїтивно зрозумілий API.
* Використовувати імена (операції) методів HTTP безпосередньо, простим та інтуїтивно зрозумілим способом.
Тому, коли говорять про версію 2.0, прийнято говорити «Swagger», а про версію 3+ «OpenAPI».
-/// check | Надихнуло **FastAPI** на
+/// tip | Надихнуло **FastAPI** на
Прийняти і використовувати відкритий стандарт для специфікацій API замість спеціальної схеми.
Але він був створений до того, як існували підказки типу Python. Отже, щоб визначити кожну <dfn title="визначення того, як дані повинні бути сформовані">схему</dfn>, вам потрібно використовувати спеціальні утиліти та класи, надані Marshmallow.
-/// check | Надихнуло **FastAPI** на
+/// tip | Надихнуло **FastAPI** на
Використовувати код для автоматичного визначення "схем", які надають типи даних і перевірку.
Це чудовий інструмент, і я також часто використовував його, перш ніж створити **FastAPI**.
-/// info | Інформація
+/// note | Примітка
Webargs був створений тими ж розробниками Marshmallow.
///
-/// check | Надихнуло **FastAPI** на
+/// tip | Надихнуло **FastAPI** на
Мати автоматичну перевірку даних вхідного запиту.
Редактор тут нічим не може допомогти. І якщо ми змінимо параметри чи схеми Marshmallow і забудемо також змінити цю строку документа YAML, згенерована схема буде застарілою.
-/// info | Інформація
+/// note | Примітка
APISpec був створений тими ж розробниками Marshmallow.
///
-/// check | Надихнуло **FastAPI** на
+/// tip | Надихнуло **FastAPI** на
Підтримувати відкритий стандарт API, OpenAPI.
І ці самі генератори повного стеку були основою [**FastAPI** генераторів проектів](project-generation.md).
-/// info | Інформація
+/// note | Примітка
Flask-apispec був створений тими ж розробниками Marshmallow.
///
-/// check | Надихнуло **FastAPI** на
+/// tip | Надихнуло **FastAPI** на
Створення схеми OpenAPI автоматично з того самого коду, який визначає серіалізацію та перевірку.
Він не дуже добре обробляє вкладені моделі. Отже, якщо тіло JSON у запиті є об’єктом JSON із внутрішніми полями, які, у свою чергу, є вкладеними об’єктами JSON, його неможливо належним чином задокументувати та перевірити.
-/// check | Надихнуло **FastAPI** на
+/// tip | Надихнуло **FastAPI** на
Використовувати типи Python, щоб мати чудову підтримку редактора.
///
-/// check | Надихнуло **FastAPI** на
+/// tip | Надихнуло **FastAPI** на
Знайти спосіб отримати божевільну продуктивність.
Таким чином, перевірка даних, серіалізація та документація повинні виконуватися в коді, а не автоматично. Або вони повинні бути реалізовані як фреймворк поверх Falcon, як Hug. Така сама відмінність спостерігається в інших фреймворках, натхненних дизайном Falcon, що мають один об’єкт запиту та один об’єкт відповіді як параметри.
-/// check | Надихнуло **FastAPI** на
+/// tip | Надихнуло **FastAPI** на
Знайти способи отримати чудову продуктивність.
Разом із Hug (оскільки Hug базується на Falcon) надихнув **FastAPI** оголосити параметр `response` у функціях.
-Хоча у FastAPI це необов’язково, і використовується в основному для встановлення заголовків, файлів cookie та альтернативних кодів статусу.
+Хоча у FastAPI це необов’язково, і використовується в основному для встановлення заголовків, кукі та альтернативних кодів статусу.
///
Маршрути оголошуються в одному місці з використанням функцій, оголошених в інших місцях (замість використання декораторів, які можна розмістити безпосередньо поверх функції, яка обробляє кінцеву точку). Це ближче до того, як це робить Django, ніж до Flask (і Starlette). Він розділяє в коді речі, які відносно тісно пов’язані.
-/// check | Надихнуло **FastAPI** на
+/// tip | Надихнуло **FastAPI** на
Визначити додаткові перевірки для типів даних, використовуючи значення "за замовчуванням" атрибутів моделі. Це покращує підтримку редактора, а раніше вона була недоступна в Pydantic.
Оскільки він заснований на попередньому стандарті для синхронних веб-фреймворків Python (WSGI), він не може працювати з Websockets та іншими речами, хоча він також має високу продуктивність.
-/// info | Інформація
+/// note | Примітка
Hug створив Тімоті Крослі, той самий творець [`isort`](https://github.com/timothycrosley/isort), чудовий інструмент для автоматичного сортування імпорту у файлах Python.
///
-/// check | Ідеї, що надихнули **FastAPI**
+/// tip | Ідеї, що надихнули **FastAPI**
Hug надихнув частину APIStar і був одним із найбільш перспективних інструментів, поряд із APIStar.
Hug надихнув **FastAPI** на використання підказок типу Python для оголошення параметрів і автоматичного створення схеми, що визначає API.
-Hug надихнув **FastAPI** оголосити параметр `response` у функціях для встановлення заголовків і файлів cookie.
+Hug надихнув **FastAPI** оголосити параметр `response` у функціях для встановлення заголовків і кукі.
///
Він мав систему введення залежностей. Він вимагав попередньої реєстрації компонентів, як і інші інструменти, розглянуті вище. Але все одно це була чудова функція.
-Я ніколи не міг використовувати його в повноцінному проекті, оскільки він не мав інтеграції безпеки, тому я не міг замінити всі функції, які мав, генераторами повного стеку на основі Flask-apispec. У моїх невиконаних проектах я мав створити запит на вилучення, додавши цю функцію.
+Я ніколи не міг використовувати його в повноцінному проекті, оскільки він не мав інтеграції безпеки, тому я не міг замінити всі функції, які мав, генераторами повного стеку на основі Flask-apispec. У моїх невиконаних проектах я мав створити запит на витяг, додавши цю функцію.
Але потім фокус проекту змінився.
Тепер APIStar — це набір інструментів для перевірки специфікацій OpenAPI, а не веб-фреймворк.
-/// info | Інформація
+/// note | Примітка
APIStar створив Том Крісті. Той самий хлопець, який створив:
///
-/// check | Надихнуло **FastAPI** на
+/// tip | Надихнуло **FastAPI** на
Існувати.
Його можна порівняти з Marshmallow. Хоча він швидший за Marshmallow у тестах. Оскільки він базується на тих самих підказках типу Python, підтримка редактора чудова.
-/// check | **FastAPI** використовує його для
+/// tip | **FastAPI** використовує його для
Виконання перевірки всіх даних, серіалізації даних і автоматичної документації моделі (на основі Схеми JSON).
* Серйозно вражаючу продуктивність.
* Підтримку WebSocket.
* Фонові завдання в процесі.
-* Ð\9fодÑ\96Ñ\97 запÑ\83Ñ\81кÑ\83 Ñ\82а завеÑ\80Ñ\88еннÑ\8f Ñ\80обоÑ\82и.
+* Ð\9fодÑ\96Ñ\97 запÑ\83Ñ\81кÑ\83 Ñ\82а вимкненнÑ\8f.
* Тестового клієнта, побудований на HTTPX.
* CORS, GZip, статичні файли, потокові відповіді.
-* Підтримку сеансів і файлів cookie.
+* Підтримку сеансів і кукі.
* 100% покриття тестом.
* 100% анотовану кодову базу.
* Кілька жорстких залежностей.
///
-/// check | **FastAPI** використовує його для
+/// tip | **FastAPI** використовує його для
Керування всіма основними веб-частинами. Додавання функцій зверху.
Це рекомендований сервер для Starlette і **FastAPI**.
-/// check | **FastAPI** рекомендує це як
+/// tip | **FastAPI** рекомендує це як
Основний веб-сервер для запуску програм **FastAPI**.
-# Ð\94опоможÑ\96Ñ\82Ñ\8c FastAPI - оÑ\82Ñ\80имайÑ\82е допомогÑ\83 { #help-fastapi-get-help }
+# Ð\94опомога { #help }
-Ð\92ам подобаÑ\94Ñ\82Ñ\8cÑ\81Ñ\8f **FastAPI**?
+Ð\92и Ñ\85оÑ\87еÑ\82е допомогÑ\82и FastAPI або оÑ\82Ñ\80имаÑ\82и допомогÑ\83 Ñ\89одо FastAPI?
-Хочете допомогти FastAPI, іншим користувачам та автору?
-
-Або ви хочете отримати допомогу щодо **FastAPI**?
-
-Є дуже прості способи допомогти (деякі потребують лише одного-двох кліків).
-
-І є кілька способів отримати допомогу.
+Є дуже прості способи допомогти й отримати допомогу.
## Підпишіться на розсилку { #subscribe-to-the-newsletter }
* Несумісних змін 🚨
* Порад і трюків ✅
-## СÑ\82ежÑ\82е за FastAPI в X (Twitter) { #follow-fastapi-on-x-twitter }
+## СÑ\82ежÑ\82е за FastAPI онлайн { #follow-fastapi-online }
-[Стежте за @fastapi в **X (Twitter)**](https://x.com/fastapi), щоб отримувати найсвіжіші новини про **FastAPI**. 🐦
+Ви можете стежити за **FastAPI** онлайн у кількох місцях:
+
+* [@fastapi в **X / Twitter**](https://x.com/fastapi)
+* [@fastapi.tiangolo.com у **Bluesky**](https://bsky.app/profile/fastapi.tiangolo.com)
+* [FastAPI у **LinkedIn**](https://www.linkedin.com/company/fastapi/)
## Додайте зірочку **FastAPI** на GitHub { #star-fastapi-in-github }
Зробивши це, ви отримуватимете сповіщення (на вашу електронну пошту) щоразу, коли вийде новий реліз (нова версія) **FastAPI** з виправленнями помилок і новими можливостями.
-## Зв'яжіться з автором { #connect-with-the-author }
-
-Ви можете зв'язатися зі [мною (Sebastián Ramírez / `tiangolo`)](https://tiangolo.com), автором.
-
-Ви можете:
-
-* [Стежити за мною на **GitHub**](https://github.com/tiangolo).
- * Подивитися інші Open Source-проєкти, які я створив і які можуть вам допомогти.
- * Стежити, щоб бачити, коли я створюю новий Open Source-проєкт.
-* [Стежити за мною в **X (Twitter)**](https://x.com/tiangolo) або [Mastodon](https://fosstodon.org/@tiangolo).
- * Розкажіть мені, як ви використовуєте FastAPI (мені дуже приємно це чути).
- * Дізнаватися, коли я роблю оголошення або випускаю нові інструменти.
- * Також ви можете [стежити за @fastapi в X (Twitter)](https://x.com/fastapi) (окремий акаунт).
-* [Стежити за мною в **LinkedIn**](https://www.linkedin.com/in/tiangolo/).
- * Дізнаватися, коли я роблю оголошення або випускаю нові інструменти (хоча X (Twitter) я використовую частіше 🤷♂).
-* Читати, що я пишу (або стежити за мною) на [**Dev.to**](https://dev.to/tiangolo) або [**Medium**](https://medium.com/@tiangolo).
- * Читати інші ідеї, статті та про інструменти, які я створив.
- * Стежити, щоб читати нове, коли я щось публікую.
-
-## Твітніть про **FastAPI** { #tweet-about-fastapi }
-
-[Твітніть про **FastAPI**](https://x.com/compose/tweet?text=I'm loving @fastapi because... https://github.com/fastapi/fastapi) і дайте мені та іншим знати, чому він вам подобається. 🎉
-
-Мені дуже подобається дізнаватися, як використовують **FastAPI**, що вам у ньому сподобалося, у якому проєкті/компанії ви його застосовуєте тощо.
+## Стежте за автором { #follow-the-author }
-## Голосуйте за FastAPI { #vote-for-fastapi }
+Ви можете стежити за [мною (Sebastián Ramírez / `tiangolo`)](https://tiangolo.com), автором, у кількох місцях, щоб дізнаватися, коли в мене є новини про FastAPI та друзів:
-* [Проголосуйте за **FastAPI** на Slant](https://www.slant.co/options/34241/~fastapi-review).
-* [Проголосуйте за **FastAPI** на AlternativeTo](https://alternativeto.net/software/fastapi/about/).
-* [Повідомте, що ви використовуєте **FastAPI**, на StackShare](https://stackshare.io/pypi-fastapi).
+* [@tiangolo на **GitHub**](https://github.com/tiangolo).
+* [@tiangolo в **X (Twitter)**](https://x.com/tiangolo)
+* [@tiangolo.com у **Bluesky**](https://bsky.app/profile/tiangolo.com)
+* [@tiangolo у **LinkedIn**](https://www.linkedin.com/in/tiangolo/).
## Допомагайте іншим з питаннями на GitHub { #help-others-with-questions-in-github }
-Ви можете спробувати допомагати іншим з їхніми питаннями у:
-
-* [GitHub Discussions](https://github.com/fastapi/fastapi/discussions/categories/questions?discussions_q=category%3AQuestions+is%3Aunanswered)
-* [GitHub Issues](https://github.com/fastapi/fastapi/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Aquestion+-label%3Aanswered+)
+Ви можете спробувати допомагати іншим з їхніми питаннями у [GitHub Discussions](https://github.com/fastapi/fastapi/discussions/categories/questions?discussions_q=category%3AQuestions+is%3Aunanswered).
У багатьох випадках ви вже можете знати відповідь на ці питання. 🤓
Якщо ви багато допомагаєте людям із їхніми питаннями, ви станете офіційним [Експертом FastAPI](fastapi-people.md#fastapi-experts). 🎉
-Пам'ятайте, найважливіше: намагайтеся бути добрими. Люди приходять зі своєю фрустрацією і часто питають не найкращим чином, але постарайтеся бути якомога доброзичливішими. 🤗
-
-Ідея в тому, щоб спільнота **FastAPI** була доброзичливою та гостинною. Водночас не терпіть булінг чи неповажну поведінку щодо інших. Ми маємо піклуватися одне про одного.
-
----
-
-Ось як допомагати іншим із питаннями (у discussions або issues):
-
-### Зрозумійте питання { #understand-the-question }
-
-* Перевірте, чи розумієте ви **мету** та варіант використання людини, яка питає.
-
-* Потім перевірте, чи **чітке** саме питання (переважна більшість — це питання).
-
-* Часто запит стосується уявного рішення користувача, але може бути **краще**. Якщо ви краще зрозумієте проблему та варіант використання, зможете запропонувати кращу **альтернативу**.
-
-* Якщо ви не розумієте питання, попросіть більше **подробиць**.
-
-### Відтворіть проблему { #reproduce-the-problem }
+Пам'ятайте, найважливіше: намагайтеся бути добрими. 🤗
-У більшості випадків і запитань мова йде про **оригінальний код** людини.
+### Як допомагати { #how-to-help }
-Часто вони наводять лише фрагмент коду, але цього недостатньо, щоб **відтворити проблему**.
-
-* Ви можете попросити надати [мінімальний, відтворюваний приклад](https://stackoverflow.com/help/minimal-reproducible-example), який ви зможете **скопіювати-вставити** і запустити локально, щоб побачити ту саму помилку або поведінку, яку бачать вони, або краще зрозуміти їхній варіант використання.
-
-* Якщо ви дуже щедрі, можете спробувати **створити такий приклад** самостійно, лише на основі опису проблеми. Просто майте на увазі, що це може зайняти багато часу, і краще спочатку попросити їх уточнити проблему.
-
-### Запропонуйте рішення { #suggest-solutions }
-
-* Після того як ви змогли зрозуміти питання, дайте можливу **відповідь**.
-
-* Часто краще зрозуміти їхню **первинну проблему або варіант використання**, адже може бути кращий спосіб її вирішити, ніж те, що вони намагаються зробити.
-
-### Попросіть закрити { #ask-to-close }
-
-Якщо вони відповіли, дуже ймовірно, що ви розв'язали їхню проблему. Вітаю, **ви герой**! 🦸
-
-* Тепер, якщо це вирішило їхню проблему, ви можете попросити:
-
- * У GitHub Discussions: позначити коментар як **відповідь**.
- * У GitHub Issues: **закрити** issue.
-
-## Стежте за репозиторієм GitHub { #watch-the-github-repository }
-
-Ви можете «спостерігати» за FastAPI на GitHub (натиснувши кнопку «watch» у верхньому правому куті): [https://github.com/fastapi/fastapi](https://github.com/fastapi/fastapi). 👀
-
-Якщо вибрати «Watching» замість «Releases only», ви отримуватимете сповіщення, коли хтось створює нове issue або питання. Ви також можете вказати, що хочете отримувати сповіщення лише про нові issues, або discussions, або PR тощо.
-
-Тоді ви зможете спробувати допомогти їм вирішити ці питання.
+Дотримуйтесь [посібника, як допомагати](https://tiangolo.com/open-source/help/#help-others-with-questions-in-github) тут.
## Ставте питання { #ask-questions }
* Поставити **питання** або запитати про **проблему**.
* Запропонувати нову **можливість**.
-**Примітка**: якщо ви це зробите, я попрошу вас також допомагати іншим. 😉
-
-## Переглядайте запити на витяг { #review-pull-requests }
-
-Ви можете допомогти мені переглядати запити на витяг інших.
-
-І знову, будь ласка, намагайтеся бути якомога доброзичливішими. 🤗
-
----
-
-Ось що слід пам'ятати і як переглядати запит на витяг:
-
-### Зрозумійте проблему { #understand-the-problem }
-
-* Спочатку переконайтеся, що ви **розумієте проблему**, яку намагається вирішити запит на витяг. Може бути довша дискусія у GitHub Discussion або issue.
-
-* Також є велика ймовірність, що запит на витяг насправді не потрібен, бо проблему можна розв'язати **іншим способом**. Тоді ви можете про це запропонувати або запитати.
-
-### Не переймайтеся стилем { #dont-worry-about-style }
-
-* Не надто хвилюйтеся про стиль повідомлень фіксацій, я зроблю squash and merge, налаштувавши фіксацію вручну.
-
-* Також не переймайтеся правилами стилю, вже є автоматизовані інструменти, що це перевіряють.
-
-А якщо будуть інші вимоги щодо стилю чи узгодженості, я попрошу про це безпосередньо або додам зверху фіксації з потрібними змінами.
-
-### Перевірте код { #check-the-code }
-
-* Перегляньте та прочитайте код, оцініть, чи він має сенс, **запустіть його локально** і перевірте, чи справді він розв'язує проблему.
-
-* Потім залиште **коментар**, що ви це зробили, так я знатиму, що ви справді перевірили.
-
-/// info
-
-На жаль, я не можу просто довіряти PR, які мають кілька схвалень.
-
-Бувало не раз, що PR мали 3, 5 або більше схвалень, мабуть тому, що опис привабливий, але коли я перевіряв PR, вони виявлялися зламаними, мали помилку або не розв'язували заявлену проблему. 😅
-
-Тож дуже важливо, щоб ви справді прочитали і запустили код та повідомили в коментарях, що ви це зробили. 🤓
-
-///
-
-* Якщо PR можна якось спростити, ви можете про це попросити, але немає потреби бути надто прискіпливими, адже може бути багато суб'єктивних точок зору (і в мене також є своя 🙈), тож краще зосередитися на фундаментальних речах.
-
-### Тести { #tests }
-
-* Допоможіть перевірити, що PR має **тести**.
-
-* Переконайтеся, що тести **падають** до PR. 🚨
-
-* Потім перевірте, що тести **проходять** після PR. ✅
-
-* Багато PRів не мають тестів, ви можете **нагадати** додати тести або навіть **запропонувати** деякі тести самі. Це одна з речей, яка найбільше забирає часу, і ви дуже допоможете.
-
-* Потім також прокоментуйте, що саме ви спробували, так я знатиму, що ви це перевірили. 🤓
-
-## Створіть запит на витяг { #create-a-pull-request }
-
-Ви можете [зробити внесок](contributing.md) у вихідний код із запитами на витяг, наприклад:
-
-* Щоб виправити описку, знайдену в документації.
-* Щоб поділитися статтею, відео або подкастом про FastAPI, який ви створили або знайшли, [відредагувавши цей файл](https://github.com/fastapi/fastapi/edit/master/docs/en/data/external_links.yml).
- * Обов'язково додайте ваше посилання на початок відповідного розділу.
-* Щоб допомогти [перекласти документацію](contributing.md#translations) вашою мовою.
- * Ви також можете допомогти з переглядом перекладів, створених іншими.
-* Щоб запропонувати нові розділи документації.
-* Щоб виправити наявну проблему/помилку.
- * Обов'язково додайте тести.
-* Щоб додати нову можливість.
- * Обов'язково додайте тести.
- * Обов'язково додайте документацію, якщо це доречно.
-
-## Допоможіть підтримувати FastAPI { #help-maintain-fastapi }
-
-Допоможіть мені підтримувати **FastAPI**! 🤓
-
-Роботи багато, і більшу її частину можете зробити **ВИ**.
-
-Основні завдання, які ви можете виконувати вже зараз:
-
-* [Допомагайте іншим з питаннями на GitHub](#help-others-with-questions-in-github) (див. розділ вище).
-* [Переглядайте запити на витяг](#review-pull-requests) (див. розділ вище).
-
-Ці два завдання **найбільше споживають час**. Це основна робота з підтримки FastAPI.
-
-Якщо ви можете допомогти мені з цим, **ви допомагаєте підтримувати FastAPI** і гарантуєте, що він **рухатиметься швидше й краще**. 🚀
-
## Долучайтеся до чату { #join-the-chat }
Долучайтеся до 👥 [серверу чату Discord](https://discord.gg/VQjSZaeJmf) 👥 і спілкуйтеся з іншими в спільноті FastAPI.
-/// tip
+/// tip | Порада
-Для запитань ставте їх у [GitHub Discussions](https://github.com/fastapi/fastapi/discussions/new?category=questions), там значно вища ймовірність, що вам допоможуть [Експерти FastAPI](fastapi-people.md#fastapi-experts).
+Для запитань ставте їх у GitHub Discussions, значно вища ймовірність, що ви отримаєте допомогу.
Використовуйте чат лише для інших загальних розмов.
Майте на увазі, що оскільки чати дозволяють більше «вільної розмови», легко ставити надто загальні питання, на які складніше відповісти, тож ви можете не отримати відповідей.
-У GitHub шаблон підкаже вам, як написати правильне питання, щоб ви легше отримали хорошу відповідь, або навіть вирішили проблему самостійно ще до запиту. І в GitHub я можу гарантувати, що завжди на все відповім, навіть якщо це займе трохи часу. Особисто я не можу робити це в чатах. 😅
-
-Розмови в чатах також не так просто шукати, як у GitHub, тож питання та відповіді можуть загубитися. І лише ті, що в GitHub, зараховуються, щоб стати [Експертом FastAPI](fastapi-people.md#fastapi-experts), тож швидше за все ви отримаєте більше уваги саме в GitHub.
-
-З іншого боку, у чатах є тисячі користувачів, тож дуже ймовірно, що ви майже завжди знайдете там співрозмовника. 😄
-
-## Спонсоруйте автора { #sponsor-the-author }
-
-Якщо ваш **продукт/компанія** залежить від **FastAPI** або пов'язана з ним і ви хочете охопити його користувачів, ви можете спонсорувати автора (мене) через [GitHub sponsors](https://github.com/sponsors/tiangolo). Залежно від рівня ви можете отримати додаткові переваги, наприклад значок у документації. 🎁
-
----
+У GitHub шаблон підкаже вам, як написати правильне питання, щоб ви легше отримали хорошу відповідь, або навіть розв'язали проблему самостійно ще до запиту.
-Ð\94Ñ\8fкÑ\83Ñ\8e! ð\9f\9a\80
+Розмови в Ñ\87аÑ\82аÑ\85 Ñ\82акож не Ñ\82ак пÑ\80оÑ\81Ñ\82о Ñ\88Ñ\83каÑ\82и, Ñ\8fк Ñ\83 GitHub, вони гÑ\83блÑ\8fÑ\82Ñ\8cÑ\81Ñ\8f.