К содержанию

Wiki · Технологии разработки

FastAPI

FastAPI – это фреймворк на Python для создания API: программных интерфейсов, через которые сайт, мобильное приложение или другой сервис получают данные и отдают команды. Проверку данных и документацию к методам он делает сам.

Заказчику FastAPI обычно предлагают в двух ситуациях. Нужен бэкенд для мобильного приложения или сайта на JavaScript. Или нужно сделать из модели ИИ сервис, к которому обращаются CRM и сайт. Пользователь FastAPI не видит: у него нет страниц и админки, только методы, которые отвечают данными в JSON. Как работают сами API, разобрано в статье API.

Кто написал FastAPI и почему версия всё ещё 0.X

Фреймворк написал разработчик Себастьян Рамирес, первый публичный выпуск вышел в декабре 2018 года. Лицензия MIT, использование бесплатное. На главной странице проекта среди пользователей названы Microsoft, Uber, Netflix и Cisco. Внутри FastAPI опирается на две библиотеки: Starlette отвечает за работу с запросами, Pydantic за проверку данных.

У проекта есть особенность, о которой заказчику стоит знать. На октябрь 2026 года актуальна версия 0.142, до 1.0 фреймворк так и не дошёл. Документация прямо предупреждает: изменения, ломающие совместимость, выходят в версиях вида 0.X, поэтому версию в проекте фиксируют и обновляют только после тестов.

Как FastAPI проверяет данные и сам пишет документацию

Условный пример метода, который отдаёт статус заказа:

@app.get("/orders/{order_id}")
def get_order(order_id: int):
    return {"id": order_id, "status": "paid"}

Три строки задают адрес, тип параметра и ответ. Если вместо номера заказа придут буквы, FastAPI сам ответит ошибкой 422 и объяснит, какое поле не прошло проверку. Что значат такие ответы, читайте в статье Коды ответов сервера.

По тем же описаниям фреймворк собирает документацию. Она открывается по адресам /docs и /redoc, а схема в формате OpenAPI лежит в /openapi.json. Разработчик мобильного приложения видит все методы и может отправить тестовый запрос прямо из браузера. На боевом сервере эти страницы не оставляют открытыми для всех, иначе любой посетитель увидит полный список методов: документацию отключают одной настройкой или закрывают паролем.

FastAPI поддерживает асинхронную работу: пока один запрос ждёт ответа от базы или внешнего сервиса, сервер обрабатывает другие. Запускают приложение через сервер Uvicorn, он ставится вместе с фреймворком.

Четыре шага обработки запроса в FastAPI: запрос к методу, автоматическая проверка данных, логика метода и ответ в JSON
Как FastAPI обрабатывает запрос

Бэкенд приложений, интеграции и ИИ-сервисы

  • Бэкенд мобильного приложения: каталог, корзина, профиль, история заказов.
  • Данные для сайта, у которого интерфейс написан на JavaScript-фреймворке.
  • Интеграции: приём вебхуков от CRM и платёжных сервисов, обмен со складом.
  • Сервис с ИИ: сайт и CRM отправляют запросы к языковой модели через одну точку с журналом и лимитами.

FastAPI, Django или Go

ЗадачаЧто подходитПочему
Только API: приложение, интеграции, ИИ-сервисFastAPIПроверка данных и документация из коробки
Портал со страницами, админкой и пользователямиDjangoАдминка, пользователи и формы уже встроены
API под очень большой нагрузкойGoКомпилируемый язык, параллельная обработка запросов
Сайт компании или интернет-магазинCMSКаталог, формы и редактор контента готовы

Варианты можно сочетать: например, контент и админка на Django, а данные для мобильного приложения отдаёт отдельный сервис на FastAPI. А вот сайт с контентом и редакторами на одном FastAPI выйдет дороже: страницы, админку и права, которые в Django или CMS уже есть, придётся дописывать.

Авторизация и JWT

В FastAPI есть инструменты для OAuth2, ключей API и HTTP-авторизации, а в документации разобран пример входа с токенами JWT. Но готовой системы пользователей, как в Django, нет. Таблицу пользователей, хеширование паролей, сброс пароля и роли доступа пишет разработчик или берёт из сторонних библиотек.

Спросите подрядчика, сколько живёт токен, как отозвать доступ уволенного сотрудника и где хранятся пароли. Токены передают только по HTTPS. Пароли в базе хранят только в виде хешей, а у токена должен быть срок жизни: бессрочный токен уволенного сотрудника так и будет открывать API.

Чек-лист для заказчика проекта на FastAPI: фиксированная версия, тесты, закрытая документация, хеши паролей, срок жизни токенов, отзыв доступа
Что спросить у подрядчика по API

Схема OpenAPI, подрядчик и сервер

Схема OpenAPI, которую FastAPI собирает сам, по сути договор между бэкендом и приложением: какие методы есть, что они принимают и что возвращают. Храните её вместе с проектом. По схеме новый подрядчик быстро разберётся в API, а разработчики приложения сгенерируют из неё код для обращения к серверу.

Искать отдельного «разработчика на FastAPI» не обязательно: подойдёт Python-разработчик с опытом в API. Для запуска нужен сервер с Python, на обычном PHP-хостинге проект не заработает, подробнее в статье Хостинг.

Чтобы понять, сделан ли уже работающий API на FastAPI, откройте его адрес с /docs на конце. Если там страница Swagger со списком методов и заголовком FastAPI, ответ найден. Ещё один признак: заголовок Server со значением uvicorn. На боевых проектах документацию часто закрывают, тогда проще спросить подрядчика.

Если проект уже работает на FastAPI, берём его на доработку и техническую поддержку. Бэкенд и API делаем в проектах мобильных приложений.

Запуск, стандарт OpenAPI и отличия от Flask и Django

Чем FastAPI отличается от Flask?

Flask старше и универсальнее: это микрофреймворк, где проверку входящих данных и документацию API подключают отдельными расширениями. В FastAPI и то и другое встроено и работает по стандарту OpenAPI. Если новому проекту нужно только API, FastAPI обычно экономит время на старте.

Что выбрать для мобильного приложения с админкой: FastAPI или Django?

Если сотрудникам нужна панель для правки каталога и контента, удобно совместить: Django даёт админку и пользователей, FastAPI отдаёт данные приложению. Если панель управления не нужна, хватит одного FastAPI. Обе части пишут на Python, так что команда может быть одна.

Как запустить приложение на FastAPI на сервере?

Обычно через ASGI-сервер Uvicorn, который устанавливается с фреймворком. Приложение размещают на VPS или в облаке, а перед ним ставят веб-сервер, принимающий запросы по HTTPS. Обычный PHP-хостинг не подойдёт: Python-приложению нужен свой постоянно работающий процесс.

Какой стандарт описывает структуру API в FastAPI?

OpenAPI. Фреймворк сам строит схему по коду методов, и по ней работают обе встроенные страницы документации, Swagger UI и ReDoc. Ту же схему можно отдать разработчикам приложения или загрузить в Postman, чтобы не описывать методы вручную.

Что значит ошибка 422 в ответе FastAPI?

Запрос дошёл до сервера, но данные не прошли проверку: не хватает обязательного поля, вместо числа пришёл текст, дата в чужом формате. В теле ответа FastAPI перечисляет, какое поле и почему не подошло, поэтому исправлять обычно нужно запрос со стороны сайта или приложения, а не сервер. Остальные коды разобраны в статье Коды ответов сервера.

Почему FastAPI называют быстрым?

В названии сразу две скорости. Работает он быстро за счёт асинхронности: пока один запрос ждёт базу или внешний сервис, сервер отвечает другим. А писать на нём быстро, потому что проверку данных и документацию не делают руками. Для API под очень большой нагрузкой всё равно часто выбирают Go.

Источники

  • Документация FastAPI: возможности, версии, безопасность, обработка ошибок, развёртывание
  • FastAPI на PyPI: история выпусков
  • Спецификация OpenAPI

Остались вопросы по теме «FastAPI»?

Напишите нам в Telegram или MAX. Ответит специалист, который отвечает за эту тему, или руководитель проектов в рабочее время.

Сергей ЧерняковОтвечает по темеСергей ЧерняковWeb-разработчик

Услуги

Услуги по теме

Все услуги →

Посчитайте стоимость проекта за 2 минуты

Калькулятор соберёт смету по нашим тарифам: сайт, дизайн, интеграции и поддержка.