Що таке FastAPI і для чого він потрібен
За останні 30 років складні корпоративні застосунки росли як на дріжджах. І цей ріст неминуче призвів до двох наслідків:
- внутрішня модель застосунку ставала все складнішою і складнішою
- сервери для цих застосунків повинні були ставати все потужнішими і потужнішими
Уявіть: в звичайному корпоративному застосунку спочатку жило тисяча об'єктів, потім десятки тисяч, а згодом уже сотні тисяч (як у місті — спочатку селище, потім райцентр, а потім мегаполіс). Щоб усе це продовжувало працювати без збоїв, довелося ввести дуже суворі правила і стандарти внутрішньої архітектури. Ось тут і підоспіла мова Java — вона виявилася настільки добре «заточена» під корпоративний сектор, що стала мовою програмування №1 у світі.
А великий застосунок вимагає багато пам'яті й ядер процесора. Цю проблему завжди вирішували просто — купували сервери потужніші. Сервер з 20 процесорами і терабайтом оперативної пам'яті давно вже увійшов у моду, як колись увійшли циліндрові капелюхи.
Однак приблизно 10 років тому ситуація почала змінюватися. Розумні люди додумалися дробити серверний код на частини і запускати їх як окремі застосунки. Так, комунікація між частинами стала складніше (як між жителями різних районів міста), але натомість внутрішня структура кожної частини радикально спростилася.
Спочатку великі монолітні застосунки дробили на десятки менших, а з появою Docker їх почали дробити на сотні мікросервісів. Застосунки стали дуже маленькі і дуже прості, хоча комунікація між ними ускладнилася. Але й цю задачу вирішили стандартизувавши її: API, REST, GraphQL, Kafka тощо.
Саме тоді Python почав знову набирати популярність. Все тому, що на Python дуже легко написати невеликий застосунок, який спілкується з іншими по API, завернути його в Docker-контейнер і запустити. Сучасні Enterprise-проєкти можуть складатися зі сотень таких застосунків, часто написаних на різних мовах.
А трохи пізніше на сцену вийшов FastAPI...
Знайомство з FastAPI
Хоча ви лише починаєте свій шлях у вивченні FastAPI, ваш багаж знань про Python і веб-розробку вже непоганий. Ви освоїли Django, Docker і SQL, тож ви точно готові до чогось нового, швидкого і сучасного. FastAPI стане для нас наступним кроком: будемо знайомитися з цим свіжим фреймворком, який поєднує в собі силу асинхронного програмування та простоту використання.
FastAPI – це сучасний веб-фреймворк на Python для створення API. Простими словами, FastAPI допомагає вам будувати серверну частину застосунків, які працюють з клієнтами (будь то мобільний застосунок, браузер або інший сервіс). FastAPI створений заради швидкості, зручності та комфорту розробників – саме те, що ми любимо.
Чому "Fast"?
Назва говорить сама за себе. FastAPI використовує асинхронну архітектуру з підтримкою ASGI (Asynchronous Server Gateway Interface), що робить його неймовірно швидким. За продуктивністю він близький до фреймворку Node.js і значно перевершує Flask або Django в подібних задачах.
Ще одна причина швидкодії FastAPI в тому, що генерація документації, валідація даних і обробка запитів працюють "з коробки". Отже, ви пишете менше коду і отримуєте більше результату.
FastAPI був створений Себастьяном Раміресом у 2018 році. Він не лише розробив фреймворк, а й зробив офіційну документацію такою зрозумілою й дружньою, що вона прославилась навіть серед тих, хто не користується FastAPI.
Переваги використання FastAPI
Давайте розберемося, чому FastAPI так люблять розробники. Ось ключові переваги:
1. Швидкодія і висока продуктивність
FastAPI забезпечує асинхронну обробку запитів з допомогою async і await. Це означає, що застосунки, побудовані з FastAPI, можуть обробляти тисячі запитів одночасно, не блокуючи основну програму. Для задач з інтенсивними ввід/вивід операціями (робота з базами даних, зовнішніми API тощо) це величезний плюс.
Спробуйте уявити ресторан, де офіціанти обслуговують кожного гостя виключно в порядку черги. Погодьтесь, в них навряд чи буде затишшя від клієнтів. А от FastAPI — це ресторан, де офіціанти одночасно приймають замовлення, подають їжу і спілкуються з клієнтами без затримок. Так і має бути!
2. Простота використання
FastAPI слідує принципу "мінімум конфігурації – максимум можливостей". Усі основні функції: маршрутизація, робота з JSON і керування запитами — вбудовані і легко доступні.
Як IDE (наприклад, PyCharm) допомагає вам писати код швидше з автодоповненням, так FastAPI робить процес розробки API інтуїтивнішим і супроводжується корисними підказками.
3. Автоматична генерація документації
Якщо ви коли-небудь писали документацію для API вручну, то знаєте, наскільки це нудно. FastAPI використовує OpenAPI і Swagger, щоб генерувати документацію автоматично. Це означає, що ваше API буде одразу готове до тестування і використання – жодних зайвих зусиль!
Приклад документації виглядає ось так:
4. Вбудована підтримка типізації та валідації
FastAPI працює поверх Pydantic, бібліотеки для валідації даних. Це дозволяє описувати структуру даних з використанням анотацій типів Python. Хочеш упевнитися, що користувач вводить вік у вигляді цілого числа? FastAPI перевірить це за вас.
Приклад:
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
Усього в пару рядків ви вже описали модель даних, яку FastAPI використовує для перевірки запитів.
Основні можливості FastAPI
FastAPI пропонує багато інструментів для повсякденної роботи з API. Ось деякі з них:
- Автоматична валідація даних: якщо щось у запиті піде не так, ви отримаєте зрозуміле повідомлення про помилку.
- Асинхронна підтримка: використовуйте
asyncіawaitдля максимально швидкої обробки задач. - Підтримка WebSocket: створюйте застосунки реального часу, наприклад, чати або системи сповіщень.
- Легкість інтеграції з базами даних: FastAPI чудово поєднується з ORMs (наприклад, SQLAlchemy) і базами даних.
- Безпека "з коробки": інструменти для аутентифікації (включаючи OAuth2 і JWT) вже готові до використання.
FastAPI активно використовується у продакшені. Ось деякі відомі проєкти і компанії, які застосовують цей фреймворк:
- Netflix: для обробки даних і машинного навчання.
- Uber: для створення внутрішніх інструментів і API.
- Microsoft: в хмарних рішеннях.
Це говорить про те, що FastAPI — не лише інструмент для навчання, але й серйозний вибір для роботи.
Мінімальний застосунок на FastAPI
Пора подивитися на код. Ось приклад найпростішого API:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Ласкаво просимо у FastAPI!"}
Що тут відбувається?
- Ми імпортуємо
FastAPIі створюємо об'єкт застосункуapp. - За допомогою декоратора
@app.get("/")створюємо маршрут для кореневого URL (/). - Обробник
read_rootповертає JSON-відповідь з повідомленням.
Щоб запустити застосунок, потрібно використовувати сервер Uvicorn (про нього детальніше в наступних лекціях):
uvicorn main:app --reload
Після запуску ви побачите таке повідомлення в консолі:
Uvicorn running on http://127.0.0.1:8000
Перейдіть за цією адресою в браузері, і ви побачите: {"message": "Ласкаво просимо у FastAPI!"}. Вітаю, ви щойно створили своє перше API!
Чому FastAPI так важливий?
FastAPI вирішує купу проблем для сучасного розробника:
- Він швидкий. Підходить для високонавантажених систем і real-time застосунків.
- Він дружній. Менше "магії", більше читабельного коду.
- Він сучасний. З підтримкою типізації, асинхронності і автоматичної документації FastAPI на передовій веб-розробки.
Усе це робить FastAPI незамінним інструментом як для новачків, так і для досвідчених розробників. Уявіть проєкт, де розробка API займає лічені дні, а не тижні – це реально з FastAPI.
Тепер, коли ми познайомилися з FastAPI і зрозуміли його ключові особливості, час заглиблюватися в деталі. У наступних лекціях ми навчимося встановлювати фреймворк, налаштовувати проєкти і створювати перші ендпоінти. Готуйтесь до захопливої подорожі!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ