Модуль 3

Встановлення FastAPI та перший застосунок

Ось урок, створений спеціально для тебе у стилі Девіда Малана: енергійний, з живими прикладами та фокусом на розумінні суті.


🎓 Урок: Встановлення FastAPI та перший застосунок

(Або: Як змусити ваш Python-код спілкуватися з усім світом)


1. 🔥 Вступ: проблема та мотивація

Уявіть, що ви написали геніальну функцію на Python, яка передбачає курс біткоїна або рекомендує ідеальний фільм на вечір. Вона працює у вашому терміналі. Ви натискаєте Enter, і вона видає результат. Чудово!

Але... як цим скористається ваш друг у Нью-Йорку? Або як це побачить користувач мобільного додатка? Ви ж не надішлете їм свій ноутбук поштою, правда?

Ось тут виникає проблема: Ваш код "замкнений" у вашому комп'ютері. Йому потрібне "вікно" у світ. Йому потрібен спосіб приймати запити через Інтернет і віддавати відповіді.

Традиційно програмісти витрачали дні, щоб налаштувати ці канали зв'язку. Писали сотні рядків коду для перевірки даних, документації та обробки помилок. Це як будувати ресторан власноруч, перш ніж приготувати першу страву.

FastAPI змінює правила гри. Це як отримати повністю обладнану, надсучасну кухню з автоматичними офіціантами. Ви просто кажете: "Ось страва (дані)", а FastAPI дбає про те, як її подати клієнту (HTTP, JSON, документація).

Сьогодні ми зламаємо стіну між вашим кодом і світом. Ми створимо ваш перший API.


2. 🧠 Теоретична база (без нудної академічності)

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

1. Що таке API?

Уявіть розетку в стіні. Ви не знаєте, як влаштована електростанція, де крутяться турбіни. Вам і не треба! Ви знаєте, що якщо встромити вилку в розетку (інтерфейс), ви отримаєте струм. API (Application Programming Interface) — це та сама розетка для вашої програми. Це набір правил, за якими інші програми можуть "підключитися" до вашої й отримати дані.

2. FastAPI та Uvicorn — динамічний дует

Для роботи нам потрібні дві речі:

  1. FastAPI — це "Мозок". Він визначає логіку: "Якщо користувач зайде на сторінку /hello, скажи йому 'Привіт'". Він перевіряє дані та будує структуру.
  2. Uvicorn — це "Двигун" (Web Server). FastAPI сам по собі — це просто код, що лежить у файлі. Він не вміє слухати інтернет-порт. Uvicorn — це блискавично швидкий сервер, який бере ваш FastAPI-додаток і запускає його, очікуючи на вхідні запити.

Запам’ятайте аналогію: Якщо ваш застосунок — це гоночний болід, то FastAPI — це пілот і система керування, а Uvicorn — це потужний двигун, який змушує все це рухатися. Одне без одного вони нікуди не поїдуть.


3. 🧪 Приклади: від "порожнечі" до "магії"

Давайте забруднимо руки кодом! Відкривайте ваш улюблений редактор (VS Code, PyCharm).

Крок 0: Підготовка (Священний ритуал)

Справжні профі ніколи не смітять у глобальному просторі Python. Створіть папку для проєкту і віртуальне середовище.

# У терміналі:
mkdir my_first_api
cd my_first_api
python -m venv venv

# Активація (Windows):
venv\Scripts\activate
# Активація (Mac/Linux):
source venv/bin/activate

Тепер встановимо наш "Мозок" і "Двигун":

pip install fastapi uvicorn

Приклад 1: "Hello World" (Мінімалізм)

Створіть файл main.py і напишіть цей код.

Як ви думаєте, скільки рядків потрібно, щоб запустити веб-сервер? 50? 100? Дивіться:

from fastapi import FastAPI

# Створюємо екземпляр застосунку (наш "ресторан")
app = FastAPI()

# Декоратор каже: "Коли хтось стукає у двері (GET-запит) за адресою '/'..."
@app.get("/")
def read_root():
    # ...поверни ось це:
    return {"message": "Hello World"}

Це все. Серйозно.

Запуск двигуна 🚀

Поверніться в термінал і введіть команду:

uvicorn main:app --reload

Розшифруємо заклинання: * main: ім'я вашого файлу (main.py). * app: ім'я змінної всередині файлу (app = FastAPI()). * --reload: "магічний режим". Якщо ви зміните код і збережете файл, сервер перезавантажиться сам. Незамінно при розробці!

Ви побачите щось на зразок: Uvicorn running on http://127.0.0.1:8000. Відкрийте це посилання у браузері. Ви побачите: {"message":"Hello World"}.

Приклад 2: Магія документації

А тепер — момент істини. Чому всі так люблять FastAPI? У браузері допишіть до адреси /docs. Тобто: http://127.0.0.1:8000/docs

Ви побачите красивий інтерактивний інтерфейс (Swagger UI). Питання: Ми писали HTML для цієї сторінки? Ми писали CSS? Ні! FastAPI проаналізував ваш код і автоматично згенерував документацію, де можна навіть протестувати запити (кнопка "Try it out").


4. 🛠 Практична частина

Тепер ваша черга. Не просто читайте — пишіть!

Завдання 1: Зміна привітання Змініть код так, щоб за адресою / він повертав JSON: {"status": "ok", "system": "active"}. Перевірте у браузері (просто оновіть сторінку, сервер перезавантажиться сам завдяки --reload).

Завдання 2: Новий маршрут (Route) Додайте нову функцію під маршрутом /about. Нехай вона повертає інформацію про вас, наприклад:

{"author": "Ваше Ім'я", "level": "Novice FastAPI Developer"}

Завдання 3: Арифметика Створіть маршрут /math. Функція має повертати результат обчислення 2 + 2. Підказка: Ви можете повертати не тільки рядки, а й числа або списки.

Завдання 4: Міні-кейс "Меню" Уявіть, що ви робите бекенд для піцерії. Створіть маршрут /menu, який повертає список (list) піц.

# Приклад структури повернення:
{"pizzas": ["Margarita", "Pepperoni", "Hawaiian"]}

Завдання 5 (З зірочкою ⭐): Поломка Спробуйте видалити рядок @app.get("/") над функцією read_root. Збережіть. Зайдіть у браузер. Що сталося? Чому функція стала "невидимою" для інтернету? (Відповідь: без декоратора FastAPI не знає, що ця функція — це частина API).


5. 💡 Мислення як у розробника

Як досвідчений інженер дивиться на цей код?

  1. Типи даних — це святість. Python дозволяє писати як завгодно, але у FastAPI ми намагаємось бути точними. Хоча в прикладі вище ми не вказували типи явно, FastAPI використовує Type Hints (підказки типів) для валідації. Звикайте думати: "Які дані сюди заходять? Які виходять?".

  2. JSON — універсальна мова. Зауважте, ми повертаємо Python-словник (dict), а у браузері бачимо JSON. FastAPI робить цю конвертацію (serialization) автоматично. Досвідчений розробник пам'ятає: "Словник у Python $\neq$ JSON, але вони дуже схожі".

  3. Помилка новачка №1: Ім'я файлу. Ніколи не називайте свій файл fastapi.py! Коли ви напишете from fastapi import FastAPI, Python спробує імпортувати ваш же файл сам у себе. Ви отримаєте помилку Circular Import. Завжди називайте файл main.py, app.py або server.py.

  4. Помилка новачка №2: Забутий --reload. Якщо ви змінили код, а у браузері нічого не змінилося — перевірте термінал. Чи запущений сервер з прапорцем --reload?


6. 🧩 Підсумок

Вітаю! 🎉 Щойно ви перейшли межу від написання скриптів до створення веб-сервісів.

Що ви тепер вмієте: 1. ✅ Встановлювати та налаштовувати FastAPI середовище. 2. ✅ Розумієте різницю між застосунком (FastAPI) та сервером (Uvicorn). 3. ✅ Створили свої перші API-ендпоінти (точки входу). 4. ✅ Побачили магію автоматичної документації /docs.

Це був тільки розігрів. Зараз наші функції просто віддають статичні дані. Але що, якби ми хотіли передати дані всередину? Наприклад, запитати сервер: "Дай мені ціну товару номер 5" або "Зареєструй користувача Дмитра"?

У наступному уроці ми навчимося працювати з параметрами шляху та запиту (Path & Query Parameters). Ми змусимо наш API не просто говорити, а слухати і реагувати.

А поки що — пограйтеся з вашим сервером. Це ваша кухня, і ви тут Шеф! 👨‍🍳👩‍🍳