FastAPI Framework

Автоматическая генерация OpenAPI docs (Swagger/Redoc), типизация с Pydantic, асинхронность из коробки, автодокументация по типам.
Pydantic — библиотека валидации данных через типовые аннотации. FastAPI использует её для автоматической валидации запросов/ответов и генерации схем.
APIRouter — модуль для группировки роутов (по версиям API, модулям). FastAPI() — основной класс приложения со всем middleware и монтированием.
Зависимости объявляются как параметры функций. FastAPI автоматически вызывает их и передает результат в роут. Поддерживает кэширование (@cache), состояния, DB сессии.
async def — для I/O операций (DB, Redis, внешние API). def — для CPU-bound задач или когда нет await внутри.
BackgroundTasks — легкие задачи внутри HTTP запроса (уведомления). Celery — тяжелые фоновые задачи с очередями и воркерами.
StreamingResponse позволяет отправлять данные частями (SSE, файлы, генераторы). Полезно для больших файлов или real-time данных.
CORSMiddleware с настройками origins, methods, headers. По умолчанию разрешает все — небезопасно для продакшена.
Использовать slowapi (на Redis) или slowapi_limiter. Декоратор @limiter.limit('5/minute') на роутах.
Декоратор @app.middleware('http') с доступом к Request/Response через call_next(request).
Использовать OAuth2PasswordBearer из fastapi.security. Dependencies проверяют token в заголовке Authorization.
BaseModel — базовый класс для моделей. Field() задает дополнительные параметры (default, description, примеры, валидаторы).
Конфигурация модели: from_attributes=True (Pydantic v2), json_encoders, validation_alias и др.
Pydantic модель для ответа. FastAPI автоматически сериализует в JSON и генерирует схему в OpenAPI.
Создать engine, SessionLocal. Dependencies для DB сессий: Depends(get_db). Alembic для миграций.
Гибрид SQLAlchemy + Pydantic от создателя FastAPI. Модели работают как Pydantic и как SQLAlchemy одновременно.
Использовать joinedload(), selectinload() в SQLAlchemy или prefetch в SQLModel. select().offset().limit() вместо ORM для чтения.
Uvicorn — ASGI сервер. Gunicorn управляет процессами, Uvicorn workers — многопроцессность (--workers 4).
Добавить prometheus-fastapi-instrumentator или prometheus-client. Роут /metrics с Counter/Gauge/Histogram.
src/ (app/, core/, crud/, schemas/, models/), tests/, docker-compose.yml, .env, requirements/, Dockerfile.
Эндпоинты /health, /ready с проверкой DB, Redis, внешних сервисов. Возвращать 200 только если всё OK.
WebSocket и WebSocketDisconnect. ConnectionManager для управления активными соединениями.
FastAPI-Ariadne или Strawberry для GraphQL. REST проще для CRUD, GraphQL — для сложных запросов с фильтрацией.
from fastapi.testclient import TestClient. client = TestClient(app). Полное тестирование с моками DB/Redis.

Содержание