FastAPI

FastAPI — веб-фреймворк для создания API, разработанный Себастьяном Рамиресом[1] и написанный на Python. Один из самых быстрых[2] и, по данным опроса Stack Overflow Developer Survey 2025 года, один из самых быстрорастущих веб-фреймворков[3].

Общие сведения
FastAPI
Тип Веб-фреймворк
Автор Себастьян Рамирес
Разработчик Себастьян Рамирес
Написана на Python
Интерфейс API
Движки Starlette, Pydantic
Операционная система кроссплатформенное
Языки интерфейса Английский (документация переводится на другие языки)
Первый выпуск 8 декабря 2018
Последняя версия 0.120.1 (27 октября 2025 года)
Репозиторий github.com/fastapi/fasta…
Состояние активное
Лицензия MIT
Сайт fastapi.tiangolo.com

История

Фреймворк был создан разработчиком Себастьяном Рамиресом (Sebastián Ramírez)[4]. Идея FastAPI возникла из-за потребности в инструменте, который бы использовал аннотации типов в Python для автоматической валидации данных и генерации документации, а также поддерживал асинхронное программирование для достижения высокой производительности[5][6]. По словам Рамиреса, при создании фреймворка он вдохновлялся предыдущими работами и другими инструментами.

Первая публичная версия FastAPI была выпущена в декабре 2018 года[5]. Рамирес опубликовал проект как проект с открытым исходным кодом на GitHub[7], где он является основным автором[8]. Хотя в разработке участвует сообщество контрибьюторов, Рамирес остаётся ведущим разработчиком, определяющим направление развития фреймворка.

2019 год стал периодом стремительного развития: были добавлены ключевые функции, такие как поддержка фоновых задач (Background Tasks), WebSocket, улучшенная система внедрения зависимостей и расширенная поддержка OpenAPI. К концу года фреймворк начал набирать популярность, получив положительные отзывы от разработчиков из крупных компаний, включая Microsoft, которые отмечали его высокую производительность и удобство для сервисов машинного обучения[7].

В течение 2020 года (версии с 0.44.0 по 0.62.0) была усовершенствована работа со стандартами OpenAPI и JSON Schema, упрощена интеграция с библиотеками для работы с базами данных (включая SQLAlchemy и Tortoise ORM) и улучшена поддержка OAuth2, JWT, CORS и WebSocket[9]. Создатель фреймворка активно популяризировал его, выступая на конференциях, например на PyConBY 2020[9].

Ключевым техническим достижением 2021 года стало обновление асинхронного ядра. В октябре с выходом версий 0.69.0 и 0.70.0 фреймворк получил поддержку асинхронной библиотеки Trio в дополнение к asyncio[10]. В декабре версия 0.70.1 обеспечила совместимость с готовящейся версией Pydantic 1.9[10]. Главным признанием успеха в этом году стало включение FastAPI в число самых «любимых» (Most Loved) веб-фреймворков по результатам опроса Stack Overflow Developer Survey, где он занял одно из лидирующих мест[11].

Описание

FastAPI активно использует декораторы, аннотации типов и интроспекцию кода, что позволяет уменьшить количество шаблонного кода в веб-приложении. FastAPI автоматически генерирует и отображает документацию согласно спецификации OpenAPI[12].

В основе FastAPI лежат два ключевых компонента: Starlette и Pydantic. Starlette представляет собой легковесный ASGI-фреймворк и выступает в роли «движка», отвечающего за веб-часть: обработку асинхронных запросов и ответов, маршрутизацию и другие низкоуровневые HTTP-операции. Pydantic, в свою очередь, отвечает за работу с данными: их валидацию, сериализацию и управление настройками с использованием стандартных аннотаций типов Python[13][14]. FastAPI объединяет эти библиотеки, добавляя поверх собственную функциональность, такую как система внедрения зависимостей, утилиты для безопасности и автоматическую генерацию документации[13]. Для запуска приложений необходим ASGI-сервер, например, Uvicorn[14]. Возможно использование как асинхронных, так и синхронных представлений.

Фреймворк предоставляет несколько типов интерфейсов. Основной — это программный интерфейс приложения (API), работающий по протоколу HTTP и предназначенный для взаимодействия между программами, как правило, с использованием формата JSON[15]. Одной из ключевых особенностей является автоматическая генерация двух интерактивных веб-интерфейсов для документации API: Swagger UI (по адресу `/docs`) и ReDoc (по адресу `/redoc`)[16]. На более низком уровне FastAPI является ASGI-приложением, что обеспечивает высокую производительность за счёт асинхронной обработки запросов[17].

FastAPI гибко обрабатывает различные форматы данных. Для входящих запросов он может принимать данные из тела запроса (чаще всего в формате JSON, который автоматически валидируется с помощью моделей Pydantic), данных HTML-форм, а также из параметров пути и строки запроса[18][19]. По умолчанию ответы сериализуются в JSON, однако фреймворк поддерживает и другие форматы, предоставляя специальные классы для возврата HTML (HTMLResponse), простого текста (PlainTextResponse), а также для потоковой передачи данных и отправки файлов[20][21]. С помощью параметра `response_model` можно контролировать и фильтровать структуру исходящих данных[22].

Характеристики

FastAPI является кроссплатформенным фреймворком. Будучи основанным на Python, он может работать на любой операционной системе, где поддерживается сам язык[23], включая Linux[24], Windows и macOS[25]. Фреймворк не привязан к конкретной аппаратной платформе и совместим с различными процессорными архитектурами, такими как x86-64 и ARM[26]. Это позволяет запускать приложения на FastAPI на широком спектре устройств — от облачных серверов до маломощных одноплатных компьютеров, например, Raspberry Pi[27].

У фреймворка отсутствуют строгие аппаратные требования. Потребление ресурсов, таких как ЦП и оперативная память, зависит от сложности приложения, типа рабочей нагрузки и количества одновременных пользователей. Благодаря своей асинхронной природе FastAPI эффективно справляется с задачами, ограниченными вводом-выводом (I/O-bound), обрабатывая множество одновременных подключений с минимальной нагрузкой на процессор[28]. Для задач, интенсивно использующих процессор (CPU-bound), например, при сложных вычислениях, рекомендуется выносить операции в фоновые процессы[29]. На потребление ресурсов также влияет объём и сложность обрабатываемых данных[30][31]. Приложение на FastAPI поддаётся горизонтальному масштабированию путём запуска нескольких экземпляров за балансировщик нагрузки.

Проект распространяется по лицензии MIT[23]. Это свободная разрешительная лицензия, которая позволяет безвозмездно использовать, копировать, изменять и распространять программное обеспечение, в том числе в составе коммерческих продуктов[32]. Единственным условием является включение в копии программного обеспечения текста лицензии и уведомления об авторском праве[32].

Признание

Самый любимый (most loved) python-веб-фреймворк по опросу среди разработчиков на портале Stack Overflow в 2021[33] и 2022[34] годах. В последующих опросах (2023—2025) в категории «самых обожаемых» (most admired) он уступил лидерство фреймворку Phoenix[35][36]. При этом в 2025 году FastAPI был отмечен как один из самых быстрорастущих фреймворков с ростом популярности на 5 процентных пунктов.

Разработка и версии

FastAPI является активно развивающимся проектом, что подтверждается регулярными обновлениями и большим сообществом. Проект имеет статус активного, последней версией является 0.120.1, выпущенная 27 октября 2025 года. Разработка ведётся в открытом репозитории на GitHub, при этом публичные предварительные версии (альфа, бета или кандидаты в релизы) не выпускаются — вместо этого выходят прямые инкрементальные обновления.

Проект придерживается схемы семантического версионирования, однако, поскольку версия ещё не достигла 1.0.0, минорные релизы (например, с 0.45.0 до 0.46.0) могут содержать обратно несовместимые изменения, в то время как патч-релизы предназначены только для исправлений. Из-за этого разработчикам рекомендуется «закреплять» (pin) версию FastAPI в своих проектах, чтобы избежать непредвиденных проблем при обновлении зависимостей.

Несмотря на заявленную разработчиками готовность к использованию в производственной среде, на PyPI проект имеет формальный статус «Development Status :: 4 — Beta». Этот классификатор[37] сохраняется, так как версия фреймворка ещё не достигла 1.0.0, и он указывает на возможность обратно несовместимых изменений в будущих минорных релизах[38][39]. Таким образом, статус «Beta» относится к жизненному циклу проекта в целом, в то время как отдельные выпуски считаются стабильными.

В 2024 году в фреймворк был внесён ряд значительных обновлений. С выходом версии 0.110.0 была добавлена поддержка стандарта OpenAPI 3.1.0, что позволило документировать веб-хуки и обновило JSON Schema до версии 2020-12. В версии 0.111.0 был представлен новый интерфейс командной строки (CLI) fastapi для упрощения локальной разработки. Также продолжился переход на Pydantic V2, а поддержка Pydantic V1 была объявлена устаревшей.

В 2025 году развитие фреймворка было сосредоточено на стабильности, улучшении производительности и росте экосистемы, без анонса крупных новых функциональных возможностей. Важным направлением стала более тесная интеграция с библиотекой Pydantic V2, написанной на Rust, что положительно сказалось на скорости обработки данных.

Последняя стабильная версия FastAPI — 0.129.0, выпущенная 12 февраля 2026 года[40][41][42].

Пример кода

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

Примечания