Однією з головних функцій, необхідних для систем API, є "<abbrtitle="also called marshalling, conversion - також звана marshalling, conversion">serialization</abbr>", яка бере дані з коду (Python) і перетворює їх на щось, що можна надіслати через мережу. Наприклад, перетворення об’єкта, що містить дані з бази даних, на об’єкт JSON. Перетворення об’єктів `datetime` на строки тощо.
Однією з головних функцій, необхідних для систем API, є "<abbrtitle="також звана marshalling, conversion">серіалізація</abbr>", яка бере дані з коду (Python) і перетворює їх на щось, що можна надіслати через мережу. Наприклад, перетворення об’єкта, що містить дані з бази даних, на об’єкт JSON. Перетворення об’єктів `datetime` на строки тощо.
Іншою важливою функцією, необхідною для API, є перевірка даних, яка забезпечує дійсність даних за певними параметрами. Наприклад, що деяке поле є `int`, а не деяка випадкова строка. Це особливо корисно для вхідних даних.
Іншою важливою функцією, необхідною для API, є перевірка даних, яка забезпечує дійсність даних за певними параметрами. Наприклад, що деяке поле є `int`, а не деяка випадкова строка. Це особливо корисно для вхідних даних.
@ -145,9 +145,9 @@ def read_url():
Marshmallow створено для забезпечення цих функцій. Це чудова бібліотека, і я часто нею користувався раніше.
Marshmallow створено для забезпечення цих функцій. Це чудова бібліотека, і я часто нею користувався раніше.
Але він був створений до того, як існували підказки типу Python. Отже, щоб визначити кожну <abbrtitle="the definition of how data should be formed - визначення того, як дані повинні бути сформовані">schema</abbr>, вам потрібно використовувати спеціальні утиліти та класи, надані Marshmallow.
Але він був створений до того, як існували підказки типу Python. Отже, щоб визначити кожну <abbrtitle="визначення того, як дані повинні бути сформовані">схему</abbr>, вам потрібно використовувати спеціальні утиліти та класи, надані Marshmallow.
/// check | Inspired **FastAPI** to
/// check | Надихнуло **FastAPI** на
Використовувати код для автоматичного визначення "схем", які надають типи даних і перевірку.
Використовувати код для автоматичного визначення "схем", які надають типи даних і перевірку.
@ -155,7 +155,7 @@ Marshmallow створено для забезпечення цих функці
Іншою важливою функцією, необхідною для API, є <abbrtitle="reading and converting to Python data - читання та перетворення на дані Python">parsing</abbr> даних із вхідних запитів.
Іншою важливою функцією, необхідною для API, є <abbrtitle="читання та перетворення даних Python">аналіз</abbr> даних із вхідних запитів.
Webargs — це інструмент, створений, щоб забезпечити це поверх кількох фреймворків, включаючи Flask.
Webargs — це інструмент, створений, щоб забезпечити це поверх кількох фреймворків, включаючи Flask.
@ -169,7 +169,7 @@ Webargs був створений тими ж розробниками Marshmall
///
///
/// check | Inspired **FastAPI** to
/// check | Надихнуло **FastAPI** на
Мати автоматичну перевірку даних вхідного запиту.
Мати автоматичну перевірку даних вхідного запиту.
@ -199,7 +199,7 @@ APISpec був створений тими ж розробниками Marshmall
///
///
/// check | Inspired **FastAPI** to
/// check | Надихнуло **FastAPI** на
Підтримувати відкритий стандарт API, OpenAPI.
Підтримувати відкритий стандарт API, OpenAPI.
@ -231,7 +231,7 @@ Flask-apispec був створений тими ж розробниками Mar
///
///
/// check | Inspired **FastAPI** to
/// check | Надихнуло **FastAPI** на
Створення схеми OpenAPI автоматично з того самого коду, який визначає серіалізацію та перевірку.
Створення схеми OpenAPI автоматично з того самого коду, який визначає серіалізацію та перевірку.
@ -251,7 +251,7 @@ Flask-apispec був створений тими ж розробниками Mar
Він не дуже добре обробляє вкладені моделі. Отже, якщо тіло JSON у запиті є об’єктом JSON із внутрішніми полями, які, у свою чергу, є вкладеними об’єктами JSON, його неможливо належним чином задокументувати та перевірити.
Він не дуже добре обробляє вкладені моделі. Отже, якщо тіло JSON у запиті є об’єктом JSON із внутрішніми полями, які, у свою чергу, є вкладеними об’єктами JSON, його неможливо належним чином задокументувати та перевірити.
/// check | Inspired **FastAPI** to
/// check | Надихнуло **FastAPI** на
Використовувати типи Python, щоб мати чудову підтримку редактора.
Використовувати типи Python, щоб мати чудову підтримку редактора.
@ -271,7 +271,7 @@ Flask-apispec був створений тими ж розробниками Mar
///
///
/// check | Inspired **FastAPI** to
/// check | Надихнуло **FastAPI** на
Знайти спосіб отримати божевільну продуктивність.
Знайти спосіб отримати божевільну продуктивність.
@ -287,7 +287,7 @@ Falcon — ще один високопродуктивний фреймворк
Таким чином, перевірка даних, серіалізація та документація повинні виконуватися в коді, а не автоматично. Або вони повинні бути реалізовані як фреймворк поверх Falcon, як Hug. Така сама відмінність спостерігається в інших фреймворках, натхненних дизайном Falcon, що мають один об’єкт запиту та один об’єкт відповіді як параметри.
Таким чином, перевірка даних, серіалізація та документація повинні виконуватися в коді, а не автоматично. Або вони повинні бути реалізовані як фреймворк поверх Falcon, як Hug. Така сама відмінність спостерігається в інших фреймворках, натхненних дизайном Falcon, що мають один об’єкт запиту та один об’єкт відповіді як параметри.
/// check | Inspired **FastAPI** to
/// check | Надихнуло **FastAPI** на
Знайти способи отримати чудову продуктивність.
Знайти способи отримати чудову продуктивність.
@ -313,7 +313,7 @@ Falcon — ще один високопродуктивний фреймворк
Маршрути оголошуються в одному місці з використанням функцій, оголошених в інших місцях (замість використання декораторів, які можна розмістити безпосередньо поверх функції, яка обробляє кінцеву точку). Це ближче до того, як це робить Django, ніж до Flask (і Starlette). Він розділяє в коді речі, які відносно тісно пов’язані.
Маршрути оголошуються в одному місці з використанням функцій, оголошених в інших місцях (замість використання декораторів, які можна розмістити безпосередньо поверх функції, яка обробляє кінцеву точку). Це ближче до того, як це робить Django, ніж до Flask (і Starlette). Він розділяє в коді речі, які відносно тісно пов’язані.
/// check | Inspired **FastAPI** to
/// check | Надихнуло **FastAPI** на
Визначити додаткові перевірки для типів даних, використовуючи значення "за замовчуванням" атрибутів моделі. Це покращує підтримку редактора, а раніше вона була недоступна в Pydantic.
Визначити додаткові перевірки для типів даних, використовуючи значення "за замовчуванням" атрибутів моделі. Це покращує підтримку редактора, а раніше вона була недоступна в Pydantic.
@ -341,7 +341,7 @@ Hug створив Тімоті Крослі, той самий творець <
///
///
/// check | Ideas inspiring **FastAPI**
/// check | Надихнуло **FastAPI** на
Hug надихнув частину APIStar і був одним із найбільш перспективних інструментів, поряд із APIStar.
Hug надихнув частину APIStar і був одним із найбільш перспективних інструментів, поряд із APIStar.
@ -385,7 +385,7 @@ APIStar створив Том Крісті. Той самий хлопець, я
///
///
/// check | Inspired **FastAPI** to
/// check | Надихнуло **FastAPI** на
Існувати.
Існувати.
@ -409,7 +409,7 @@ Pydantic — це бібліотека для визначення переві
Його можна порівняти з Marshmallow. Хоча він швидший за Marshmallow у тестах. Оскільки він базується на тих самих підказках типу Python, підтримка редактора чудова.
Його можна порівняти з Marshmallow. Хоча він швидший за Marshmallow у тестах. Оскільки він базується на тих самих підказках типу Python, підтримка редактора чудова.
/// check | **FastAPI**uses it to
/// check | **FastAPI**використовує його для
Виконання перевірки всіх даних, серіалізації даних і автоматичної документацію моделі (на основі схеми JSON).
Виконання перевірки всіх даних, серіалізації даних і автоматичної документацію моделі (на основі схеми JSON).
@ -452,7 +452,7 @@ ASGI — це новий «стандарт», який розробляєтьс
///
///
/// check | **FastAPI**uses it to
/// check | **FastAPI**використовує його для
Керування всіма основними веб-частинами. Додавання функцій зверху.
Керування всіма основними веб-частинами. Додавання функцій зверху.
### На основі відкритих стандартів { #based-on-open-standards }
### На основі відкритих стандартів { #based-on-open-standards }
* <ahref="https://github.com/OAI/OpenAPI-Specification"class="external-link"target="_blank"><strong>OpenAPI</strong></a> для створення API, включаючи оголошення <abbrtitle="також відомі як: endpoints, routes">шляхів</abbr>, <abbrtitle="також відомі як HTTP-методи, наприклад, POST, GET, PUT, DELETE">операцій</abbr>, параметрів, тіл запитів, безпеки тощо.
* <ahref="https://github.com/OAI/OpenAPI-Specification"class="external-link"target="_blank"><strong>OpenAPI</strong></a> для створення API, включаючи оголошення <abbrtitle="також відомі як: endpoints, маршрути">шляхів</abbr>, <abbrtitle="також відомі як HTTP-методи, наприклад, POST, GET, PUT, DELETE">операцій</abbr>, параметрів, тіл запитів, безпеки тощо.
* Автоматична документація моделей даних за допомогою <ahref="https://json-schema.org/"class="external-link"target="_blank"><strong>JSON Schema</strong></a> (оскільки OpenAPI базується саме на JSON Schema).
* Автоматична документація моделей даних за допомогою <ahref="https://json-schema.org/"class="external-link"target="_blank"><strong>JSON Schema</strong></a> (оскільки OpenAPI базується саме на JSON Schema).
* Розроблено на основі цих стандартів після ретельного аналізу, а не як додатковий рівень поверх основної архітектури.
* Розроблено на основі цих стандартів після ретельного аналізу, а не як додатковий рівень поверх основної архітектури.
* Це також дає змогу використовувати автоматичну **генерацію клієнтського коду** багатьма мовами.
* Це також дає змогу використовувати автоматичну **генерацію клієнтського коду** багатьма мовами.
@ -170,8 +170,8 @@ FastAPI містить надзвичайно просту у використа