Skip to content

Глава 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) и выполните:

python -m venv venv
Эта команда создаст папку venv с изолированной версией Python.

Шаг 2: Активируем "силовое поле" лаборатории

  • Windows (PowerShell):

.\venv\Scripts\Activate.ps1
(Если возникает ошибка, возможно, нужно разрешить выполнение скриптов: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process)

  • Windows (CMD):
.\venv\Scripts\activate.bat
  • macOS / Linux:

source venv/bin/activate
После активации в начале строки терминала появится (venv). Это значит, что вы внутри своей лаборатории!


3. Установка двигателя: FastAPI и Uvicorn

Теперь установим два ключевых компонента:

  • fastapi: Сам фреймворк.
  • uvicorn: Молниеносный ASGI-сервер, который будет "запускать" наш двигатель.

Выполните в активированном окружении:

pip install "fastapi[all]"

💡 Почему [all]? Это установит fastapi, uvicorn и другие полезные пакеты (например, для поддержки веб-сокетов и Jinja2), которые пригодятся в будущих миссиях.

Проверка установки:

pip freeze
Вы должны увидеть в списке 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 main:app --reload
Расшифровка команды:

  • 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. Вы должны увидеть:

{
  "message": "Добро пожаловать в Центр Управления Космическим Флотом!"
}

Шаг 2: Взгляд в будущее (авто-документация)

FastAPI уже создал для вас два подарка. Откройте эти URL:

  • http://127.0.0.1:8000/docs: Интерактивная документация Swagger UI.
  • http://127.0.0.1:8000/redoc: Альтернативная документация ReDoc.

Вы увидите ваш первый эндпоинт, который можно протестировать прямо из браузера!


Квиз для закрепления

1. FastAPI известен своей...

2. Зачем нужно виртуальное окружение (`venv`)?

3. Какой сервер используется для запуска FastAPI в этом уроке?

4. Команда `uvicorn main:app --reload` означает:

5. Декоратор `@app.get("/")` в FastAPI делает что?


🚀 Итог главы:

Вы успешно собрали и запустили "гипердвигатель" своего нового 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: Проверьте политику выполнения скриптов.