Skip to content

FastAPI — основы

FastAPI — это мощный инструмент для создания современных и высокопроизводительных API. Он сочетает в себе простоту использования, скорость разработки и гибкость. Благодаря поддержке аннотаций типов и автоматической документации разработчики могут значительно ускорить процесс создания API, минимизируя количество ошибок.

FastAPI подходит как для небольших проектов, так и для крупных систем, требующих высокой производительности.

Что такое FastAPI?

FastAPI — это асинхронный веб-фреймворк, созданный на базе Starlette (веб-фреймворка) и Pydantic (библиотеки для валидации данных). Он предлагает множество удобных инструментов для разработки API, таких как автоматическая документация, встроенная валидация данных и высокая производительность благодаря использованию асинхронных вызовов.

Основные преимущества FastAPI

  1. Высокая производительность
    FastAPI работает на основе асинхронного веб-сервера ASGI, что делает его одним из самых быстрых Python-фреймворков.

  2. Аннотации типов
    Использование типов в Python (например, str, int, List) позволяет FastAPI автоматически проверять значения запросов и генерировать документацию.

  3. Автоматическая документация
    FastAPI автоматически создаёт документацию API с помощью Swagger UI и ReDoc. Это упрощает тестирование и работу с API.

  4. Простота использования
    Несмотря на свою мощь, FastAPI остаётся интуитивно понятным и легко изучаемым.

  5. Асинхронность
    Поддержка асинхронных функций позволяет обрабатывать множество запросов одновременно, улучшая производительность.

Установка FastAPI в виртуальное окружение:

Устанавливать пакет лучше используя виртуальное окружение это позволяет:

  • создать изоляцию зависимостей проекта от глобальных пакетов.
  • предотвращение конфликтов версий.
  • позволяет легко управлять разными версиями FastAPI для разных проектов.

Из минусов только требует дополнительных шагов для создания и активации окружения.

  1. Создать виртуальное окружение:

    shell
    python3 -m venv .venv (для Python 3.3 и выше)
  2. Активировать виртуальное окружение:

    shell
    source .venv/bin/activate (Linux/macOS)
    .venv\Scripts\activate (Windows)
  3. Установить FastAPI:

    shell
    pip install fastapi[all]

    pip install fastapi[all]: устанавливает FastAPI и все рекомендуемые зависимости, включая:

    • uvicorn: ASGI-сервер для запуска приложения.
    • pydantic: для валидации данных.
    • httpx: для выполнения HTTP-запросов.
    • starlette: основа FastAPI.
    • и другие полезные пакеты.

Пример простого приложения

Вот минимальный пример API на FastAPI:

python
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return "Добро пожаловать в локальный FastAPI!"

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}
  1. Создание приложения
    app = FastAPI() — это объект приложения FastAPI.

  2. Маршруты (Endpoints)
    Используются декораторы типа @app.get() для определения маршрутов.

    • В примере выше, запрос к GET / вернёт сообщение.
    • Запрос к GET /items/{item_id} позволяет передать путь item_id и необязательный параметр q.

Запуск приложения

Для запуска приложения используйте сервер Uvicorn:

bash
uvicorn main:app --reload
  • main — относительный путь к файлу (без .py), начиная с корневой папки проекта.
  • app — объект приложения FastAPI.
  • --reload — автоматическая перезагрузка при изменении кода (удобно для разработки).

После запуска приложение будет доступно по адресу: http://127.0.0.1:8000.

Автоматическая документация

FastAPI автоматически генерирует документацию API. После запуска приложения вы можете открыть:

  1. Swagger UI — доступен по адресу http://127.0.0.1:8000/docs. Это интерактивный интерфейс для тестирования API.
  2. ReDoc — доступен по адресу http://127.0.0.1:8000/redoc. Это статическая документация API.

Проверка работы

  1. Откройте браузер на http://127.0.0.1:8000/.

    Вы увидите следующий текст:

    Добро пожаловать в локальный FastAPI!
  2. Откройте браузер на http://127.0.0.1:8000/items/5?q=somequery.

Вы увидите следующий JSON ответ:

json
{"item_id": 5, "q": "somequery"}

Вы уже создали API, который:

Получает HTTP-запросы по путям / и /items/{item_id}.

И первый и второй путь используют GET операции (также известные как HTTP методы).

  • путь /items/{item_id} имеет параметр пути item_id, который должен быть int.
  • путь /items/{item_id} имеет необязательный str параметр запроса q.

Работа с параметрами запросов

Параметры пути указываются в фигурных скобках {}. Например:

python
@app.get("/users/{user_id}")
def get_user(user_id: int):
    return {"user_id": user_id}

В данном случае user_id будет автоматически преобразован в int, а если тип не совпадает, FastAPI вернёт ошибку.

Contacts: teffal@mail.ru