FastAPI
FastAPI
FastAPI — фреймворк для построения HTTP API на Python 3.8+. Он построен поверх Starlette (ASGI) и Pydantic (валидация данных). Типичные сценарии: REST/JSON-сервисы, микросервисы, бэкенд для SPA и мобильных клиентов.
Пошаговый старт: Первая программа на FastAPI. Сравнение Flask/Django/FastAPI: Создание собственного API на Python, Фреймворки и библиотеки Python.
Чем FastAPI отличается от Flask и Django
| Критерий | Flask | Django | FastAPI |
|---|---|---|---|
| Фокус | Веб + API (гибко) | Полноценные сайты | API в первую очередь |
| Валидация | Вручную / расширения | Forms / DRF | Аннотации типов + Pydantic |
| Документация API | Вручную / Swagger-плагины | DRF + drf-spectacular | Swagger UI и ReDoc из коробки |
| Async | Через Quart / 2.x | Django 4.1+ async views | Нативно (ASGI) |
| Админка | Нет | Встроенная | Нет |
FastAPI не заменяет Django там, где нужны админка, шаблоны и «батарейки» для CMS. Он выигрывает там, где контракт API и скорость разработки важнее готовой CMS.
Архитектура запроса
- ASGI-сервер (uvicorn, hypercorn) принимает соединение.
- FastAPI сопоставляет путь с обработчиком.
- Pydantic проверяет query, path, body по типам Python.
- Ответ сериализуется в JSON; схема попадает в OpenAPI.
Ключевые концепции
Приложение и маршруты
from fastapi import FastAPI
app = FastAPI(title="Demo API")
@app.get("/health")
def health():
return {"status": "ok"}
Модели Pydantic
from pydantic import BaseModel, Field
class ItemCreate(BaseModel):
title: str = Field(min_length=1, max_length=200)
done: bool = False
Ошибки валидации возвращаются как 422 Unprocessable Entity с понятным JSON — удобно для фронтенда.
Зависимости (Depends)
Общая логика (БД-сессия, текущий пользователь, пагинация) выносится в функции-зависимости и подключается к эндпоинтам без наследования «бог-классов».
Документация
После запуска доступны:
/docs— Swagger UI;/redoc— ReDoc;/openapi.json— машиночитаемая схема.
Экосистема
| Компонент | Назначение |
|---|---|
| uvicorn | ASGI-сервер для разработки и production |
| SQLAlchemy 2 + async | ORM |
| Alembic | Миграции |
| HTTPX | Тесты и исходящие запросы |
| pytest | Тестирование через TestClient |
Подробнее об инструментах: Экосистема Python-приложений.
Когда выбирать FastAPI
- Нужен чистый JSON API с автодокументацией.
- Команда уже использует type hints и хочет ловить ошибки до runtime.
- Важны WebSocket и async I/O (много параллельных запросов к БД и внешним сервисам).
- Планируется связка с React / Vue / мобильным клиентом.
Для учебного сайта с HTML-формами и админкой чаще проще Django или Flask.
Связанные материалы
- Первая программа на FastAPI
- Асинхронность и многопоточность в Python
- Веб-разработка и REST API на Python
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Python как язык общего назначения - философия, ключевые свойства и области применения в современной разработке. Фундамент для начинающего программиста - что повторить, как работать, чего ожидать. Принципы, которые делают код понятным, поддерживаемым и расширяемым. Примеры реализации типовых приложений. Каждый пример сопровождается разбором ключевых концепций языка. Наверняка каждый новичок, решивший перейти в что-то стандартное в Python, открывает себе этот файл. Как устроен Python, что входит в комплект и какие есть реализации. Структурные каркасы для построения приложений, как они устроены. Фреймворки, библиотеки, инструменты сборки, среды выполнения, системы тестирования и специализированные платформы, объединённые общей философией ясности, простоты и гибкости. Что такое модули, как устроены механизмы импорта и загрузки. Управление изолированной средой и зависимостями проекта. История Python - ключевые этапы развития языка, сообщества и экосистемы инструментов. Философия Python не зафиксирована в официальных стандартах, но она глубоко интегрирована в язык, его стандартную библиотеку, документацию и культуру разработчиков.Python - язык общего назначения
Что требуется знать перед началом изучения языка программирования Python
Рекомендации по разработке на Python
Простые приложения на Python
Встроенный модуль builtins и типизация в Python
Архитектура интерпретатора Python
Фреймворки и библиотеки Python
Экосистема Python-приложений
Модули в Python
Виртуальные окружения и управление зависимостями
История языка Python
Философия Python - Zen of Python