Перейти до змісту

Історія, проєктування і майбутнє

🌐 Переклад ШІ та людьми

Цей переклад виконано ШІ під керівництвом людей. 🤝

Можливі помилки через неправильне розуміння початкового змісту або неприродні формулювання тощо. 🤖

Ви можете покращити цей переклад, допомігши нам краще спрямовувати AI LLM.

Англійська версія

Деякий час тому користувач FastAPI запитав:

Яка історія цього проєкту? Здається, він нізвідки за кілька тижнів став чудовим [...]

Ось трохи цієї історії.

Альтернативи

Я створював API зі складними вимогами протягом кількох років (машинне навчання, розподілені системи, асинхронні завдання, бази даних NoSQL тощо), очолюючи кілька команд розробників.

У межах цього мені довелося досліджувати, тестувати й використовувати багато альтернатив.

Історія FastAPI значною мірою - це історія його попередників.

Як сказано в розділі Альтернативи:

FastAPI не існував би без попередньої роботи інших.

Було створено багато інструментів, які надихнули на його створення.

Я роками уникав створення нового фреймворку. Спочатку я намагався вирішити всі можливості, які покриває FastAPI, використовуючи різні фреймворки, плагіни та інструменти.

Але в певний момент не залишилося іншого варіанту, окрім створити щось, що надає всі ці можливості, узявши найкращі ідеї з попередніх інструментів і поєднавши їх якнайкраще, використовуючи можливості самої мови, яких раніше взагалі не було (підказки типів Python 3.6+).

Дослідження

Використовуючи всі попередні альтернативи, я мав змогу повчитися в кожної, узяти ідеї й поєднати їх якнайкраще для себе та команд розробників, з якими працював.

Наприклад, було очевидно, що в ідеалі все має ґрунтуватися на стандартних підказках типів Python.

Також найкращим підходом було використовувати вже наявні стандарти.

Тож, ще до початку написання коду FastAPI, я провів кілька місяців, вивчаючи специфікації OpenAPI, Схеми JSON, OAuth2 тощо. Розуміючи їхні взаємозв'язки, перетини та відмінності.

Проєктування

Потім я приділив час проєктуванню «API» для розробника, яке я хотів мати як користувач (як розробник, що використовує FastAPI).

Я протестував кілька ідей у найпопулярніших Python-редакторах: PyCharm, VS Code, редакторах на основі Jedi.

За даними Python Developer Survey, це охоплює близько 80% користувачів.

Це означає, що FastAPI спеціально тестувався з редакторами, якими користуються 80% розробників Python. І оскільки більшість інших редакторів працюють подібно, усі ці переваги мають працювати практично у всіх редакторах.

Так я зміг знайти найкращі способи максимально зменшити дублювання коду, забезпечити автодоповнення всюди, перевірки типів і помилок тощо.

І все це так, щоб надати найкращий досвід розробки для всіх розробників.

Вимоги

Після перевірки кількох альтернатив я вирішив використовувати Pydantic через його переваги.

Потім я зробив внески до нього, щоб зробити його повністю сумісним із Схемою JSON, додати підтримку різних способів оголошення обмежень і поліпшити підтримку редакторів (перевірки типів, автодоповнення) на основі тестів у кількох редакторах.

Під час розробки я також зробив внески до Starlette, іншої ключової залежності.

Розробка

Коли я взявся безпосередньо за створення FastAPI, більшість складових уже були на місцях: дизайн визначено, вимоги та інструменти підготовлено, знання про стандарти й специфікації - чіткі та свіжі.

Майбутнє

На цей момент уже зрозуміло, що FastAPI зі своїми ідеями корисний для багатьох.

Його обирають замість попередніх альтернатив, бо він краще відповідає багатьом сценаріям використання.

Багато розробників і команд уже залежать від FastAPI у своїх проєктах (включно зі мною та моєю командою).

Але попереду ще багато покращень і можливостей.

FastAPI має велике майбутнє.

І ваша допомога дуже цінується.