Курс на Stepik
Обложка курса «Python: Антикризисный FastAPI» на Stepik
5 000 ₽

Python: Антикризисный FastAPI ★ 5.000

Открыть на
STEPIK.ORG

Пишем полноценный REST API на FastAPI — от приложения в один файл до production-ready сервиса с базой данных, авторизацией, тестами и хранилищем файлов. Один коммит — один шаг: видно, как сервис растёт строчка за строчкой, на реальном проекте, а не на очередном «Hello World». Курс для тех, кто уже знает базу Python и хочет наконец написать что-то серьёзное

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «Python: Антикризисный FastAPI»Учеников на курсе 56
Сертификаты, выданные на курсе «Python: Антикризисный FastAPI»Сертификатов выдано 1
Отзывы о курсе «Python: Антикризисный FastAPI»Отзывов получено 1
Рейтинг курса «Python: Антикризисный FastAPI»Рейтинг курса 5.000
Уроки в курсе «Python: Антикризисный FastAPI»Количество уроков 178
Тесты в курсе «Python: Антикризисный FastAPI»Количество квизов 893
Задачи с кодом в курсе «Python: Антикризисный FastAPI»Количество задач с кодом 3
Время прохождения курса «Python: Антикризисный FastAPI»Время прохождения курса —
Стоимость курса «Python: Антикризисный FastAPI»Стоимость курса 5 000 ₽ —
Обновления курса «Python: Антикризисный FastAPI»Обновления курса — —
Дата публикации курса «Python: Антикризисный FastAPI»Дата публикации курса — ———
Последнее обновление курса «Python: Антикризисный FastAPI»Последнее обновление — ———
Сложность normal — ———

Содержание курса

Разделы в курсе «Python: Антикризисный FastAPI» 21 раздел Уроки в курсе «Python: Антикризисный FastAPI» 178 уроков Тесты в курсе «Python: Антикризисный FastAPI» 893 теста Задачи в курсе «Python: Антикризисный FastAPI» 3 задачи Время прохождения курса «Python: Антикризисный FastAPI» 29 ч. Последнее обновление курса «Python: Антикризисный FastAPI» обн. 27 августа 2026

Первые шаги

1 урок
1. Python–старт ↗

Основы REST API и HTTP (общая теория)

2 урока
1. Теория ключевых аспектов ↗
2. Есть вопросик... ↗

Первое приложение на FastAPI

9 уроков
1. Инициализация проекта в VS Code ↗
2. От def к async def ↗
3. Техническое задание на сервис ↗
4. Первый эндпоинт со списком товаров ↗
5. Аннотации типов для PRODUCTS ↗
6. Получение товара по ID и обработка 404 ↗
7. Поиск товаров по тексту ↗
8. Фильтр товаров по категории ↗
9. Самостоятельная работа: фильтр по диапазону цен ↗

CRUD: создание, обновление и удаление товаров

8 уроков
1. Создание товара через POST ↗
2. Ручная валидация полей в POST ↗
3. Сбор всех ошибок валидации в одном ответе ↗
4. Пример тела запроса в Swagger ↗
5. Полная замена товара через PUT ↗
6. Удаление товара через DELETE ↗
7. От example к examples в OpenAPI ↗
8. Подготовка: Pydantic v2 в зависимостях ↗

Pydantic, обработка ошибок и структура проекта

11 уроков
1. Pydantic-модели ProductBase и Product ↗
2. response_model и доступ через точку в GET ↗
3. Field-валидация и ProductCreate в POST ↗
4. Самостоятельная работа: Pydantic в PUT ↗
5. Доступ через точку в DELETE ↗
6. Рефакторинг ↗
7. Кастомные русские сообщения об ошибках ↗
8. Локализация ошибки product_id ↗
9. Рефакторинг: выносим приложение в пакет app ↗
10. Pydantic-схемы — в app/schemas.py ↗
11. Обработка ошибок — в app/errors.py ↗

Основы баз данных и SQL (общая теория)

19 уроков
1. Зачем нужны базы данных ↗
2. Установка и настройка окружения для работы с SQLite ↗
3. Основные концепции структуры базы данных ↗
4. Отношения в базе данных ↗
5. Что такое SQL и система типов ↗
6. Создание таблиц ↗
7. Ограничения SQL ↗
8. Добавление записей ↗
9. Самостоятельная работа: наполнение данными ↗
10. Выборка данных ↗
11. Фильтрация данных ↗
12. Оператор обновления данных ↗
13. Самостоятельная работа на обновление данных ↗
14. Оператор удаления данных ↗
15. Самостоятельная работа: создание и наполнение базы данных ↗
16. Сложные концепции ↗
17. Самостоятельная работа на сложные запросы ↗
18. Сложные запросы ↗
19. Самостоятельная работа на объединение ↗

База данных SQLite и слой репозитория

14 уроков
1. Подключаем SQLite через SQLAlchemy ↗
2. Асинхронная настройка SQLAlchemy ↗
3. Инициализация БД и lifespan FastAPI ↗
4. Клиенты для работы с БД и .gitignore ↗
5. Сидирование БД начальными данными ↗
6. Репозиторий и dependency injection ↗
7. Получение списка продуктов из БД ↗
8. Получение по id и функция ensure_found ↗
9. Поиск с пользовательской SQL-функцией PY_LOWER ↗
10. Фильтр по категории через PY_LOWER ↗
11. Фильтр по диапазону цен через BETWEEN и COALESCE ↗
12. Обновление товара через репозиторий ↗
13. Удаление через репозиторий и финал перехода ↗
14. Уникальность имени и IntegrityError → 409 Conflict ↗

Переход на SQLAlchemy ORM

12 уроков
1. ORM-модель ProductORM на DeclarativeBase ↗
2. Инициализация схемы через ORM-модель ↗
3. Seed на ORM с проверкой «уже сидировано» ↗
4. list_all через select() и from_attributes ↗
5. get_by_id через session.get ↗
6. Создание товара через session.add и refresh ↗
7. Обновление через setattr и dirty-tracking ↗
8. Унификация возвращаемых типов через model_validate ↗
9. Удаление через ORM с возвратом сущности ↗
10. Поиск на SQLAlchemy Core: select, or_, func ↗
11. Фильтры по категории и цене на ORM-запросах ↗
12. Подведение итогов: текущее состояние сервиса ↗

Модуль 6. Модульные роутеры и пользователи

7 уроков
1. APIRouter и модульная регистрация маршрутов ↗
2. Вынос продуктовых эндпоинтов в отдельный роутер ↗
3. ORM-модели пользователей и ролей ↗
4. Сидирование admin-пользователя и привязка товаров ↗
5. Схемы и каркас репозитория пользователей ↗
6. Реализация методов UserRepository ↗
7. Регистрация пользователей через роутер auth ↗

Аутентификация и авторизация: JWT и роли

11 уроков
1. JWT-токены: теория аутентификации ↗
2. Создание и проверка JWT через PyJWT ↗
3. Логин и OAuth2PasswordRequestForm ↗
4. get_current_user и CurrentUser-зависимость ↗
5. Первый защищённый эндпоинт: search ↗
6. Проверка владельца и роли в продуктовых эндпоинтах ↗
7. Хеширование паролей через bcrypt ↗
8. Роутер users и эндпоинт /users/me ↗
9. Смена пароля через PATCH /users/me/password ↗
10. AdminUser-зависимость и список пользователей ↗
11. Активация и деактивация пользователей ↗

Аудит действий через event listeners

8 уроков
1. AuditLog: модель, репозиторий, схема ↗
2. Аудит-логирование через отдельный сервис ↗
3. Эндпоинты просмотра аудита ↗
4. Теория ↗
5. ORM-listener'ы и ContextVar для actor_id ↗
6. HTTP middleware для actor_id ↗
7. Уборка явных вызовов audit.record ↗
8. Аудит изменений продуктов через ORM events ↗

Переезд на PostgreSQL и Docker

12 уроков
1. Подготовка к переезду на PostgreSQL: установка Docker ↗
2. Экспресс-погружение в Docker ↗
3. docker-compose.yml с PostgreSQL ↗
4. Переезд на PostgreSQL через asyncpg ↗
5. Нормализация поиска через lower и replace для Postgres ↗
6. Dockerfile для приложения ↗
7. Pydantic Settings и переменные окружения ↗
8. SECRET_KEY и TTL токена в env-переменных ↗
9. ADMIN_PASSWORD в переменных окружения ↗
10. FastAPI в Compose рядом с Postgres ↗
11. Compose-профили dev и prod ↗
12. Makefile: алиасы для частых команд ↗

Миграции схемы через Alembic

8 уроков
1. Миграции схемы БД: зачем нужны ↗
2. Установка Alembic и структура миграций ↗
3. env.py: метаданные моделей и URL из Settings ↗
4. Первая миграция: init schema ↗
5. Запуск миграций на старте приложения ↗
6. Поле created_at и автогенерация миграции ↗
7. Переименование колонки и почему Alembic его «не видит» ↗
8. Alembic в Dockerfile и команды миграций в Makefile ↗

Тестирование: от юнитов до интеграционных тестов

12 уроков
1. pytest: первая инфраструктура тестов ↗
2. Формы assert и измерение покрытия ↗
3. Первые «живые» тесты — модуль security ↗
4. А что, если ты тестировщик: анализ граничных значений ↗
5. FastAPI TestClient: API-тест без поднятия сервера ↗
6. Async-тесты в pytest и режим asyncio_mode = "auto" ↗
7. Тестируем Pydantic-схему: фикстуры и валидация ↗
8. Отдельный тестовый Postgres в docker-compose ↗
9. conftest.py: тестовый engine, sessionmaker и session ↗
10. Проверка изоляции тестов между прогонами ↗
11. AsyncClient и override зависимостей FastAPI ↗
12. Интеграционный тест GET /products ↗

Версионирование API и генерация тестовых данных

3 урока
1. Версионирование API через префикс /api/v1 ↗
2. Генератор тестовых продуктов на Faker ↗
3. Подключаем фабрику к seed_db и упираемся в ↗

Хранилище файлов: S3, MinIO и модель изображений

6 уроков
1. Хранилище картинок: S3, MinIO и aioboto3 ↗
2. S3-настройки и async-обёртка S3Storage ↗
3. ensure_bucket: автосоздание S3-бакета при старте ↗
4. Публичная политика чтения S3-бакета ↗
5. ProductImageORM: модель картинки и связь 1-к-1 ↗
6. Сидинг placeholder в S3 и в product_image ↗

Пагинация и API v2

5 уроков
1. Универсальная пагинация: Page[T] и PageParams ↗
2. v2-поиск по имени и описанию с пагинацией ↗
3. v2-роутер продуктов и пагинированный list ↗
4. v2-фильтрация по категории с пагинацией ↗
5. v2-фильтрация по цене с опциональными границами ↗

Загрузка и управление изображениями товаров

5 уроков
1. Эндпоинт картинки товара ↗
2. put_object и delete_object в S3Storage ↗
3. upsert_image и delete_image в репозитории ↗
4. POST и DELETE для картинки товара ↗
5. Проблема: удалённые товары оставляют картинки в S3 ↗

Модуль 16. Модуль поддержки пользователей — итоговый проект

18 уроков
1. Каркас модуля поддержки: пакет app/support ↗
2. SupportStatus и SenderRole: enum-ы для поддержки ↗
3. ConversationORM: модель диалога поддержки ↗
4. ConversationMessageORM ↗
5. Индексы и миграция для таблиц поддержки ↗
6. Связь с админом и Pydantic-схемы модуля поддержки ↗
7. SupportRepository: каркас и методы чтения ↗
8. SupportRepository: остальные методы репозитория ↗
9. Пользовательский роутер поддержки и создание обращения ↗
10. Пагинированный список обращений пользователя ↗
11. Просмотр обращения и проверка владельца ↗
12. Отправка сообщения в обращение ↗
13. Отметка обращения как прочитанного ↗
14. Админский роутер: список всех обращений ↗
15. Счётчики обращений для админки ↗
16. Просмотр любого обращения админом ↗
17. Ответ админа на обращение ↗
18. Закрытие обращения: владелец или админ ↗

Публичный API и финальные штрихи

6 уроков
1. Флаг featured для продуктов ↗
2. Выборка избранных товаров с добивкой случайными ↗
3. Публичный endpoint избранных товаров ↗
4. Категории с количеством товаров (агрегация) ↗
5. Расширение seed: реальные картинки товаров ↗
6. CORS: пускаем фронтенд к API ↗

Что дальше

1 урок
1. Возможно, тут появится продолжение... ↗