Ось готовий урок, створений за твоїм майстер-промптом. Ми зануримося у світ веб-розробки з енергією CS50!
🎓 Урок: Що таке FastAPI і навіщо він потрібен
👋 Привіт, світе! Мене звати... (тут ваше ім’я або просто «ваш інструктор»), і це — вступ до сучасної бекенд-розробки.
Сьогодні ми говоримо про інструмент, який змінив правила гри у світі Python. Інструмент, який люблять у Netflix, Uber та Microsoft. Ми говоримо про FastAPI.
1. 🔥 Вступ: Проблема та мотивація
Уявіть ситуацію. Ви написали геніальну Python-функцію, яка передбачає курс біткоїна, або, скажімо, рекомендує ідеальний фільм на вечір. Вона працює у вас на ноутбуці. Чудово.
Але тут виникає проблема: Як дати доступ до вашої функції мільйонам користувачів через інтернет?
Ви ж не будете надсилати кожному свій файл .py, правда? Вашій функції потрібен «інтерфейс», «двері», через які мобільний додаток або веб-сайт зможе постукати, передати дані й отримати відповідь.
Це і є API (Application Programming Interface).
Але створення API раніше було схоже на будівництво будинку з нуля: треба було замішувати бетон, прокладати проводку, думати про безпеку... Це довго і нудно.
Риторичне питання: Хіба розробка не має бути такою ж швидкою, як і ваша думка? Хіба ви хочете витрачати години на написання нудної документації, яку ніхто не читатиме?
Звісно, ні! Саме тут на сцену виходить FastAPI.
Аналогія: Уявіть, що старі фреймворки — це пошта минулого століття. Ви пишете листа, клеїте марку, несете в скриньку, чекаєте тиждень... FastAPI — це месенджер. Це миттєво. Це чітко. І він сам підказує вам слова (автодоповнення коду), перш ніж ви їх допишете.
2. 🧠 Теоретична база (без нудної академічності)
Що ж таке FastAPI «під капотом»?
FastAPI — це сучасний веб-фреймворк для створення API на Python.
Ось три кити, на яких він тримається (це треба запам’ятати):
-
Швидкість (Asynchronous): Він використовує сучасні можливості Python (
async/await). Це дозволяє йому обробляти тисячі запитів одночасно, не чекаючи, поки один завершиться, щоб почати інший.- Інтуїтивно: Як офіціант, який приймає замовлення у п'яти столиків, поки кухня готує першу страву. Він не стоїть і не чекає, поки посмажиться котлета.
-
Типізація даних (Type Hints & Pydantic): FastAPI вимагає, щоб ви вказували типи даних (це число? це рядок?).
- Навіщо: Це ваш «фейс-контроль». Якщо функція чекає число, а користувач надіслав слово "привіт", FastAPI зупинить його на вході й скаже: «Ей, друже, помилка!». Вам не треба писати ці перевірки вручну!
-
Автоматична документація (Swagger UI): Це магія. FastAPI дивиться на ваш код і сам малює інтерактивний сайт, де можна протестувати ваше API.
- Логіка: Ви пишете код — документація з’являється сама.
3. 🧪 Приклади (від простого до реального)
Для запуску нам знадобиться бібліотека uvicorn (це сервер, який запускає наш код).
Встановлення: pip install fastapi uvicorn
Приклад 1: Мінімальний (Hello World)
Подивіться на цей код. Як ви думаєте, що станеться, коли ми звернемося до нашого сервера?
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello World"}
Пояснення:
* Ми створили об'єкт app. Це і є наш додаток.
* Декоратор @app.get("/") каже: "Якщо хтось постукає у головні двері (/) методом GET (просто відкриє сторінку), виконай цю функцію".
* Ми повертаємо словник (JSON). FastAPI сам перетворить це на правильний формат для вебу.
Приклад 2: Передача параметрів (Типовий кейс)
Тепер цікавіше. Давайте привітаємо конкретного користувача.
@app.get("/hello/{name}")
def say_hello(name: str):
return {"message": f"Привіт, {name}!"}
Питання до студента: Що буде, якщо я перейду за адресою /hello/David? А якщо /hello/123?
Відповідь: В обох випадках спрацює, бо 123 у рядку URL також сприйметься як текст (str). Але ми отримаємо персоналізовану відповідь!
Приклад 3: Валідація даних (Це вже рівень PRO)
Уявіть, що ми інтернет-магазин. Ми хочемо додати товар. Товар має мати назву (рядок) і ціну (число).
from pydantic import BaseModel
# Ми описуємо, як виглядає Товар
class Item(BaseModel):
name: str
price: float
is_offer: bool = None
@app.post("/items/")
def create_item(item: Item):
return {"item_name": item.name, "item_price_with_tax": item.price * 1.2}
Що тут відбувається?
Якщо користувач спробує надіслати ціну як слово "безкоштовно", FastAPI автоматично видасть помилку. Він гарантує, що всередині функції item.price — це точно число. Вам не треба це перевіряти if-ами!
4. 🛠 Практична частина
Тепер ваша черга! Відкрийте редактор коду (VS Code, PyCharm або навіть блокнот).
-
🔹 Повторити: Створіть файл
main.py, вставте "Приклад 1" і запустіть командою в терміналі:uvicorn main:app --reloadВідкрийте у браузері посилання, яке з'явиться. -
🔹 Магія документації: Перейдіть за адресою
http://127.0.0.1:8000/docs. Що ви бачите? Спробуйте натиснути кнопку "Try it out" і надіслати запит прямо з браузера. Круто, так? -
🔹 Змінити умови: Додайте новий ендпоінт (маршрут)
/calculator/{a}/{b}, який приймає два числа і повертає їх суму. Підказка: Не забудьте вказати типи аргументів якint. -
🔹 Виправити помилку: Створіть функцію, яка приймає
age: int. Спробуйте через документацію (/docs) надіслати туди слово "двадцять". Прочитайте повідомлення про помилку. Чи зрозуміле воно? -
🔹 Міні-кейс: Уявіть, що ви робите сервіс погоди. Створіть ендпоінт, який приймає назву міста і повертає:
{"city": city_name, "temperature": 20, "status": "sunny"}. (Поки що дані можуть бути фейковими). -
🔹 А що, якщо... Видаліть типізацію (
: intабо: str) у вашому коді. Чи перестане код працювати? (Спойлер: працюватиме, але зникне магія перевірки та документації).
5. 💡 Мислення як у розробника
Як відрізнити новачка від профі, дивлячись на код FastAPI?
- Помилка новачка: Писати купу перевірок вручну всередині функції.
python # ❌ Не робіть так if not isinstance(price, float): return "Error" -
Думка профі: "Я опишу схему даних один раз за допомогою Pydantic, і нехай фреймворк робить брудну роботу за мене".
-
Порада з практики: Завжди використовуйте Type Hints. Це не просто для краси. Це дозволяє вашому редактору коду (IDE) підказувати вам методи й атрибути. Коли ви ставите крапку після
item., ви хочете бачити список доступних полів, правда?
6. 🧩 Підсумок
Отже, що ми сьогодні дізналися?
- FastAPI — це швидкісний спосіб створення серверної частини (бекенду).
- Він базується на типах даних Python, що робить код надійним.
- Він дарує нам безкоштовну документацію.
Тепер ви вмієте: Запустити найпростіший веб-сервер і створити API, яке приймає дані, перевіряє їх і відповідає клієнту.
🔥 Тизер наступного уроку: Окей, ми навчилися приймати й віддавати дані. Але де їх зберігати? Вони зникають, коли ми вимикаємо сервер! На наступному уроці ми підключимо Базу Даних і навчимо наш додаток "пам'ятати" все вічно.
А поки що — це був CS50... тобто, це був вступ до FastAPI! 😉
Питання? (Чекаю на ваші експерименти з кодом!)