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

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

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

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

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

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

Разделы в курсе «Python: Антикризисный FastAPI» 21 раздел Уроки в курсе «Python: Антикризисный FastAPI» 178 уроков Тесты в курсе «Python: Антикризисный FastAPI» 894 теста Задачи в курсе «Python: Антикризисный FastAPI» 4 задачи Время прохождения курса «Python: Антикризисный FastAPI» 26 ч. Последнее обновление курса «Python: Антикризисный FastAPI» обн. 10 июля 2026

1. Первые шаги

1 урок
Закрытый
1.1 Python–старт
11
8
4м 28с
0

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

2 урока
Закрытый
2.1 Теория ключевых аспектов
204
157
30м 21с
26
Закрытый
2.2 Есть вопросик...
184
147
5м 23с
11

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

9 уроков
Открытый
3.1 Инициализация проекта в VS Code
9
4
36м 53с
0
Открытый
3.2 От def к async def
8
4
2м 58с
0
Закрытый
3.3 Техническое задание на сервис
4
4
2м 54с
0
Открытый
3.4 Первый эндпоинт со списком товаров
4
4
5м 33с
0
Открытый
3.5 Аннотации типов для PRODUCTS
5
3
3м 38с
0
Открытый
3.6 Получение товара по ID и обработка 404
5
4
4м 39с
0
Открытый
3.7 Поиск товаров по тексту
5
3
5м 16с
0
Открытый
3.8 Фильтр товаров по категории
4
3
3м 58с
0
Открытый
3.9 Самостоятельная работа: фильтр по диапазону цен
6
3
6м 8с
0

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

8 уроков
Закрытый
4.1 Создание товара через POST
2
1
10м 12с
0
Закрытый
4.2 Ручная валидация полей в POST
1
1
5м 31с
0
Закрытый
4.3 Сбор всех ошибок валидации в одном ответе
1
1
5м 15с
0
Закрытый
4.4 Пример тела запроса в Swagger
0
0
2м 32с
0
Закрытый
4.5 Полная замена товара через PUT
0
0
7м 6с
0
Закрытый
4.6 Удаление товара через DELETE
0
0
4м 13с
0
Закрытый
4.7 От example к examples в OpenAPI
0
0
5м 7с
0
Закрытый
4.8 Подготовка: Pydantic v2 в зависимостях
0
0
3м 47с
0

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

11 уроков
Закрытый
5.1 Pydantic-модели ProductBase и Product
0
0
4м 40с
0
Закрытый
5.2 response_model и доступ через точку в GET
0
0
4м 41с
0
Закрытый
5.3 Field-валидация и ProductCreate в POST
0
0
7м 3с
0
Закрытый
5.4 Самостоятельная работа: Pydantic в PUT
1
0
1м 0с
0
Закрытый
5.5 Доступ через точку в DELETE
0
0
1м 41с
0
Закрытый
5.6 Рефакторинг
0
0
21м 56с
0
Закрытый
5.7 Кастомные русские сообщения об ошибках
0
0
7м 58с
0
Закрытый
5.8 Локализация ошибки product_id
0
0
1м 50с
0
Закрытый
5.9 Рефакторинг: выносим приложение в пакет app
0
0
9м 1с
0
Закрытый
5.10 Pydantic-схемы — в app/schemas.py
0
0
3м 1с
0
Закрытый
5.11 Обработка ошибок — в app/errors.py
0
0
5м 2с
0

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

19 уроков
Закрытый
6.1 Зачем нужны базы данных
139
101
12м 9с
16
Закрытый
6.2 Установка и настройка окружения для работы с SQLite
127
112
16м 35с
12
Закрытый
6.3 Основные концепции структуры базы данных
123
111
9м 35с
12
Закрытый
6.4 Отношения в базе данных
121
109
5м 11с
14
Закрытый
6.5 Что такое SQL и система типов
114
105
9м 31с
12
Закрытый
6.6 Создание таблиц
115
105
6м 59с
12
Закрытый
6.7 Ограничения SQL
110
101
14м 59с
14
Закрытый
6.8 Добавление записей
105
100
8м 48с
14
Закрытый
6.9 Самостоятельная работа: наполнение данными
105
99
4м 19с
12
Закрытый
6.10 Выборка данных
105
99
10м 15с
11
Закрытый
6.11 Фильтрация данных
104
99
23м 43с
13
Закрытый
6.12 Оператор обновления данных
103
99
4м 39с
10
Закрытый
6.13 Самостоятельная работа на обновление данных
104
96
6м 44с
12
Закрытый
6.14 Оператор удаления данных
103
98
5м 27с
12
Закрытый
6.15 Самостоятельная работа: создание и наполнение базы данных
102
96
2м 16с
8
Закрытый
6.16 Сложные концепции
108
99
15м 38с
13
Закрытый
6.17 Самостоятельная работа на сложные запросы
102
93
3м 58с
11
Закрытый
6.18 Сложные запросы
107
107
3м 2с
11
Закрытый
6.19 Самостоятельная работа на объединение
105
96
6м 48с
12

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

14 уроков
Закрытый
7.1 Подключаем SQLite через SQLAlchemy
2
1
6м 29с
0
Закрытый
7.2 Асинхронная настройка SQLAlchemy
0
0
5м 43с
0
Закрытый
7.3 Инициализация БД и lifespan FastAPI
0
0
3м 12с
0
Закрытый
7.4 Клиенты для работы с БД и .gitignore
0
0
4м 39с
0
Закрытый
7.5 Сидирование БД начальными данными
0
0
7м 53с
0
Закрытый
7.6 Репозиторий и dependency injection
0
0
8м 13с
0
Закрытый
7.7 Получение списка продуктов из БД
0
0
3м 33с
0
Закрытый
7.8 Получение по id и функция ensure_found
0
0
5м 54с
0
Закрытый
7.9 Поиск с пользовательской SQL-функцией PY_LOWER
0
0
10м 58с
0
Закрытый
7.10 Фильтр по категории через PY_LOWER
0
0
2м 4с
0
Закрытый
7.11 Фильтр по диапазону цен через BETWEEN и COALESCE
0
0
4м 57с
0
Закрытый
7.12 Обновление товара через репозиторий
0
0
4м 52с
0
Закрытый
7.13 Удаление через репозиторий и финал перехода
0
0
3м 48с
0
Закрытый
7.14 Уникальность имени и IntegrityError → 409 Conflict
0
0
4м 45с
0

8. Переход на SQLAlchemy ORM

12 уроков
Закрытый
8.1 ORM-модель ProductORM на DeclarativeBase
0
0
4м 5с
0
Закрытый
8.2 Инициализация схемы через ORM-модель
0
0
2м 7с
0
Закрытый
8.3 Seed на ORM с проверкой «уже сидировано»
0
0
3м 14с
0
Закрытый
8.4 list_all через select() и from_attributes
0
0
3м 20с
0
Закрытый
8.5 get_by_id через session.get
0
0
1м 29с
0
Закрытый
8.6 Создание товара через session.add и refresh
0
0
2м 17с
0
Закрытый
8.7 Обновление через setattr и dirty-tracking
0
0
4м 15с
0
Закрытый
8.8 Унификация возвращаемых типов через model_validate
0
0
6м 52с
0
Закрытый
8.9 Удаление через ORM с возвратом сущности
0
0
3м 36с
0
Закрытый
8.10 Поиск на SQLAlchemy Core: select, or_, func
0
0
3м 37с
0
Закрытый
8.11 Фильтры по категории и цене на ORM-запросах
0
0
4м 52с
0
Закрытый
8.12 Подведение итогов: текущее состояние сервиса
0
0
1м 16с
0

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

7 уроков
Закрытый
9.1 APIRouter и модульная регистрация маршрутов
0
0
8м 42с
0
Закрытый
9.2 Вынос продуктовых эндпоинтов в отдельный роутер
0
0
6м 31с
0
Закрытый
9.3 ORM-модели пользователей и ролей
0
0
5м 52с
0
Закрытый
9.4 Сидирование admin-пользователя и привязка товаров
0
0
4м 29с
0
Закрытый
9.5 Схемы и каркас репозитория пользователей
0
0
6м 41с
0
Закрытый
9.6 Реализация методов UserRepository
0
0
2м 30с
0
Закрытый
9.7 Регистрация пользователей через роутер auth
0
0
6м 38с
0

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

11 уроков
Закрытый
10.1 JWT-токены: теория аутентификации
1
0
8м 4с
0
Закрытый
10.2 Создание и проверка JWT через PyJWT
1
0
7м 16с
0
Закрытый
10.3 Логин и OAuth2PasswordRequestForm
0
0
11м 46с
0
Закрытый
10.4 get_current_user и CurrentUser-зависимость
0
0
4м 44с
0
Закрытый
10.5 Первый защищённый эндпоинт: search
0
0
4м 21с
0
Закрытый
10.6 Проверка владельца и роли в продуктовых эндпоинтах
1
0
14м 43с
0
Закрытый
10.7 Хеширование паролей через bcrypt
0
0
12м 42с
0
Закрытый
10.8 Роутер users и эндпоинт /users/me
0
0
4м 6с
0
Закрытый
10.9 Смена пароля через PATCH /users/me/password
0
0
9м 24с
0
Закрытый
10.10 AdminUser-зависимость и список пользователей
0
0
6м 17с
0
Закрытый
10.11 Активация и деактивация пользователей
0
0
9м 54с
0

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

8 уроков
Закрытый
11.1 AuditLog: модель, репозиторий, схема
0
0
7м 43с
0
Закрытый
11.2 Аудит-логирование через отдельный сервис
0
0
7м 6с
0
Закрытый
11.3 Эндпоинты просмотра аудита
0
0
5м 27с
0
Закрытый
11.4 Теория
1
0
3м 40с
0
Закрытый
11.5 ORM-listener'ы и ContextVar для actor_id
1
0
5м 38с
0
Закрытый
11.6 HTTP middleware для actor_id
0
0
4м 3с
0
Закрытый
11.7 Уборка явных вызовов audit.record
0
0
4м 42с
0
Закрытый
11.8 Аудит изменений продуктов через ORM events
1
0
1м 28с
0

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

12 уроков
Закрытый
12.1 Подготовка к переезду на PostgreSQL: установка Docker
0
0
13м 43с
0
Закрытый
12.2 Экспресс-погружение в Docker
0
0
14м 9с
0
Закрытый
12.3 docker-compose.yml с PostgreSQL
1
0
9м 55с
0
Закрытый
12.4 Переезд на PostgreSQL через asyncpg
0
0
5м 16с
0
Закрытый
12.5 Нормализация поиска через lower и replace для Postgres
0
0
8м 42с
0
Закрытый
12.6 Dockerfile для приложения
1
0
9м 11с
0
Закрытый
12.7 Pydantic Settings и переменные окружения
1
0
4м 8с
0
Закрытый
12.8 SECRET_KEY и TTL токена в env-переменных
1
0
3м 33с
0
Закрытый
12.9 ADMIN_PASSWORD в переменных окружения
1
0
1м 57с
0
Закрытый
12.10 FastAPI в Compose рядом с Postgres
1
0
16м 19с
0
Закрытый
12.11 Compose-профили dev и prod
1
0
7м 21с
0
Закрытый
12.12 Makefile: алиасы для частых команд
1
0
5м 20с
0

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

8 уроков
Закрытый
13.1 Миграции схемы БД: зачем нужны
0
0
8м 41с
0
Закрытый
13.2 Установка Alembic и структура миграций
0
0
2м 24с
0
Закрытый
13.3 env.py: метаданные моделей и URL из Settings
0
0
3м 43с
0
Закрытый
13.4 Первая миграция: init schema
0
0
3м 3с
0
Закрытый
13.5 Запуск миграций на старте приложения
0
0
10м 59с
0
Закрытый
13.6 Поле created_at и автогенерация миграции
0
0
4м 49с
0
Закрытый
13.7 Переименование колонки и почему Alembic его «не видит»
0
0
3м 53с
0
Закрытый
13.8 Alembic в Dockerfile и команды миграций в Makefile
0
0
1м 26с
0

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

12 уроков
Закрытый
14.1 pytest: первая инфраструктура тестов
0
0
12м 13с
0
Закрытый
14.2 Формы assert и измерение покрытия
0
0
6м 4с
0
Закрытый
14.3 Первые «живые» тесты — модуль security
0
0
6м 35с
0
Закрытый
14.4 А что, если ты тестировщик: анализ граничных значений
1
0
8м 37с
0
Закрытый
14.5 FastAPI TestClient: API-тест без поднятия сервера
0
0
2м 14с
0
Закрытый
14.6 Async-тесты в pytest и режим asyncio_mode = "auto"
0
0
3м 55с
0
Закрытый
14.7 Тестируем Pydantic-схему: фикстуры и валидация
0
0
3м 26с
0
Закрытый
14.8 Отдельный тестовый Postgres в docker-compose
1
0
3м 0с
0
Закрытый
14.9 conftest.py: тестовый engine, sessionmaker и session
0
0
3м 16с
0
Закрытый
14.10 Проверка изоляции тестов между прогонами
0
0
2м 25с
0
Закрытый
14.11 AsyncClient и override зависимостей FastAPI
0
0
3м 0с
0
Закрытый
14.12 Интеграционный тест GET /products
1
0
5м 16с
0

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

3 урока
Закрытый
15.1 Версионирование API через префикс /api/v1
0
0
10м 36с
0
Закрытый
15.2 Генератор тестовых продуктов на Faker
0
0
4м 13с
0
Закрытый
15.3 Подключаем фабрику к seed_db и упираемся в
1
0
5м 54с
0

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

6 уроков
Закрытый
16.1 Хранилище картинок: S3, MinIO и aioboto3
1
0
6м 42с
0
Закрытый
16.2 S3-настройки и async-обёртка S3Storage
1
0
7м 16с
0
Закрытый
16.3 ensure_bucket: автосоздание S3-бакета при старте
0
0
3м 34с
0
Закрытый
16.4 Публичная политика чтения S3-бакета
1
0
4м 17с
0
Закрытый
16.5 ProductImageORM: модель картинки и связь 1-к-1
0
0
3м 18с
0
Закрытый
16.6 Сидинг placeholder в S3 и в product_image
1
0
4м 9с
0

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

5 уроков
Закрытый
17.1 Универсальная пагинация: Page[T] и PageParams
0
0
3м 26с
0
Закрытый
17.2 v2-поиск по имени и описанию с пагинацией
0
0
3м 57с
0
Закрытый
17.3 v2-роутер продуктов и пагинированный list
0
0
7м 45с
0
Закрытый
17.4 v2-фильтрация по категории с пагинацией
0
0
2м 31с
0
Закрытый
17.5 v2-фильтрация по цене с опциональными границами
1
0
2м 23с
0

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

5 уроков
Закрытый
18.1 Эндпоинт картинки товара
0
0
9м 9с
0
Закрытый
18.2 put_object и delete_object в S3Storage
0
0
1м 51с
0
Закрытый
18.3 upsert_image и delete_image в репозитории
0
0
3м 48с
0
Закрытый
18.4 POST и DELETE для картинки товара
1
0
17м 47с
0
Закрытый
18.5 Проблема: удалённые товары оставляют картинки в S3
1
0
10м 47с
0

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

18 уроков
Закрытый
19.1 Каркас модуля поддержки: пакет app/support
0
0
6м 35с
0
Закрытый
19.2 SupportStatus и SenderRole: enum-ы для поддержки
0
0
2м 1с
0
Закрытый
19.3 ConversationORM: модель диалога поддержки
0
0
6м 57с
0
Закрытый
19.4 ConversationMessageORM
1
0
4м 30с
0
Закрытый
19.5 Индексы и миграция для таблиц поддержки
0
0
10м 31с
0
Закрытый
19.6 Связь с админом и Pydantic-схемы модуля поддержки
0
0
4м 14с
0
Закрытый
19.7 SupportRepository: каркас и методы чтения
0
0
3м 16с
0
Закрытый
19.8 SupportRepository: остальные методы репозитория
1
0
1м 53с
0
Закрытый
19.9 Пользовательский роутер поддержки и создание обращения
0
0
6м 26с
0
Закрытый
19.10 Пагинированный список обращений пользователя
0
0
3м 4с
0
Закрытый
19.11 Просмотр обращения и проверка владельца
0
0
7м 4с
0
Закрытый
19.12 Отправка сообщения в обращение
0
0
5м 39с
0
Закрытый
19.13 Отметка обращения как прочитанного
0
0
3м 14с
0
Закрытый
19.14 Админский роутер: список всех обращений
0
0
8м 4с
0
Закрытый
19.15 Счётчики обращений для админки
0
0
4м 0с
0
Закрытый
19.16 Просмотр любого обращения админом
0
0
5м 17с
0
Закрытый
19.17 Ответ админа на обращение
0
0
3м 51с
0
Закрытый
19.18 Закрытие обращения: владелец или админ
1
0
4м 50с
0

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

6 уроков
Закрытый
20.1 Флаг featured для продуктов
0
0
5м 41с
0
Закрытый
20.2 Выборка избранных товаров с добивкой случайными
0
0
4м 32с
0
Закрытый
20.3 Публичный endpoint избранных товаров
0
0
6м 40с
0
Закрытый
20.4 Категории с количеством товаров (агрегация)
0
0
6м 21с
0
Закрытый
20.5 Расширение seed: реальные картинки товаров
1
0
9м 31с
0
Закрытый
20.6 CORS: пускаем фронтенд к API
1
0
8м 40с
0

21. Что дальше

1 урок
Закрытый
21.1 Возможно, тут появится продолжение...
1
1
467м 10с
0