Глава 3.1: Установка FastAPI и настройка окружения
Время изучения: 45 минут
1. Что такое FastAPI? Гипердвигатель для API
Если Flask — это маневренный разведывательный зонд, а Django — огромный корабль-носитель, то FastAPI — это сверхсветовой истребитель.
FastAPI — это современный, высокопроизводительный веб-фреймворк для создания API на Python 3.7+. Его главные преимущества:
- Скорость: Один из самых быстрых фреймворков Python, сопоставимый с NodeJS и Go.
- Простота: Минималистичный и интуитивно понятный синтаксис.
- Авто-документация: Автоматически создает интерактивную документацию для вашего API.
- Типизация: Использует стандартные подсказки типов Python для валидации, автодополнения и документации.
💡 Космическая аналогия:
FastAPI — как "гипердвигатель" для вашего корабля-API. Он основан на двух технологиях:
- Starlette (шасси истребителя) — обеспечивает асинхронность и высочайшую производительность.
- Pydantic (бортовой компьютер) — отвечает за валидацию данных и настройки.
2. Подготовка стартовой площадки: Виртуальное окружение
Прежде чем строить наш истребитель, нужно создать стерильную сборочную лабораторию. В Python для этого используются виртуальные окружения.
Зачем это нужно? Чтобы зависимости нашего проекта (двигатели, навигационные системы) не конфликтовали с другими проектами на вашем компьютере.
Шаг 1: Создаем виртуальное окружение
Откройте терминал в папке вашего проекта (например, C:\Projects\FastAPI_Fleet
) и выполните:
venv
с изолированной версией Python.
Шаг 2: Активируем "силовое поле" лаборатории
- Windows (PowerShell):
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
)
- Windows (CMD):
- macOS / Linux:
(venv)
. Это значит, что вы внутри своей лаборатории!
3. Установка двигателя: FastAPI и Uvicorn
Теперь установим два ключевых компонента:
- fastapi: Сам фреймворк.
- uvicorn: Молниеносный ASGI-сервер, который будет "запускать" наш двигатель.
Выполните в активированном окружении:
💡 Почему
[all]
? Это установитfastapi
,uvicorn
и другие полезные пакеты (например, для поддержки веб-сокетов и Jinja2), которые пригодятся в будущих миссиях.
Проверка установки:
Вы должны увидеть в спискеfastapi
, pydantic
, starlette
, uvicorn
и другие пакеты.
4. Первый контакт: Файл main.py
Создайте в корне проекта файл main.py
— это будет центральный пульт управления нашего API.
Добавьте в main.py
следующий код:
from fastapi import FastAPI
# Создаем экземпляр нашего "космического корабля" API
app = FastAPI()
# Определяем первый "стыковочный узел" (endpoint)
# Это корневой URL: /
@app.get("/")
def read_root():
"""
Это сообщение ЦУП, которое видят все,
кто подключается к главному шлюзу.
"""
return {"message": "Добро пожаловать в Центр Управления Космическим Флотом!"}
@app.get("/")
: Это декоратор, который говорит FastAPI, что функция read_root
должна обрабатывать GET
-запросы на корневой URL (/
).
5. Зажигание! Запуск сервера
Настало время запустить наш гипердвигатель! В терминале (с активным venv
) выполните:
uvicorn
: Запускаем сервер Uvicorn.main
: Файлmain.py
(без.py
).app
: Объектapp = FastAPI()
, созданный внутриmain.py
.--reload
: "Автопилот". Сервер будет автоматически перезапускаться при каждом изменении в коде.
Ожидаемый вывод в терминале:
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [12345]
INFO: Started server process [12346]
INFO: Waiting for application startup.
INFO: Application startup complete.
6. Проверка связи с ЦУП
Ваш API теперь онлайн и слушает порт 8000
!
Шаг 1: Проверка в браузере
Откройте в браузере адрес http://127.0.0.1:8000
. Вы должны увидеть:
Шаг 2: Взгляд в будущее (авто-документация)
FastAPI уже создал для вас два подарка. Откройте эти URL:
http://127.0.0.1:8000/docs
: Интерактивная документация Swagger UI.http://127.0.0.1:8000/redoc
: Альтернативная документация ReDoc.
Вы увидите ваш первый эндпоинт, который можно протестировать прямо из браузера!
Квиз для закрепления
🚀 Итог главы:
Вы успешно собрали и запустили "гипердвигатель" своего нового API! Теперь у вас есть:
- 🛠️ Изолированное окружение для разработки (
venv
) - 🚀 Установленный FastAPI и сервер Uvicorn
- 🛰️ Работающий API с одним эндпоинтом
- 📊 Автоматически сгенерированная документация
Все системы в норме! В следующей главе мы создадим наш первый полноценный эндпоинт, который будет возвращать список космических аппаратов.
📌 Проверка:
- В терминале активна среда
(venv)
- Сервер
uvicorn
запущен без ошибок- Адрес
http://127.0.0.1:8000/docs
открывается в браузере⚠️ Если ошибки:
command not found
: Убедитесь, что вы активировали виртуальное окружение.Port ... is already in use
: Другая программа заняла порт 8000. Остановите ее или запустите uvicorn на другом порту:uvicorn main:app --reload --port 8001
.- Ошибки при активации
venv
в PowerShell: Проверьте политику выполнения скриптов.