Очень круто

FastAPI для начинающих: API с базой данных и тестами
Соберёте свой первый полноценный backend на FastAPI: с базой данных, регистрацией, JWT-авторизацией и автотестами. 34 коротких урока и 140 заданий с проверкой — бесплатно.
О курсе
Если вы уже знаете базовый Python, но пока не понимаете, как из него получается настоящий backend, этот курс проведёт вас по всему пути — от первого HTTP-запроса до работающего API в интернете.
Один проект от первого эндпоинта до запуска
Здесь нет набора несвязанных примеров. На протяжении курса вы шаг за шагом создадите один сервис: спроектируете эндпоинты, добавите проверку входных данных, сохранение в базу, регистрацию пользователей, JWT-авторизацию и контроль доступа.
Код пишете вы, а не только преподаватель
Короткие объяснения сразу закрепляются практикой. В курсе 34 урока и 140 заданий с автоматической проверкой: вы будете исправлять ошибки API, выбирать правильные статусы ответа, работать с SQLAlchemy и покрывать приложение тестами через pytest.
С чем закончите курс
У вас останется готовый backend на FastAPI — с документацией Swagger, базой данных, тестами, авторизацией и публичным адресом. Его можно показать в портфолио или использовать как основу для собственного проекта.
Курс бесплатный. Для старта достаточно базового Python; опыт backend-разработки не требуется.
Чему научитесь
- Создавать и запускать API на FastAPI с Uvicorn и Swagger UI
- Валидировать path-, query- и JSON-данные через Pydantic v2
- Проектировать CRUD и возвращать корректные статусы 201, 404, 409 и 422
- Разделять проект на APIRouter, зависимости и настройки
- Подключать SQLite через SQLAlchemy 2 и управлять Session и связями таблиц
- Тестировать API через pytest, TestClient, fixtures и dependency_overrides
- Реализовывать регистрацию, хеширование паролей и JWT-авторизацию
- Собирать и публиковать законченный backend API для портфолио
Для кого
- Начинающие Python-разработчики, знакомые с функциями, условиями и коллекциями
- Разработчики, которые ещё не создавали HTTP API на FastAPI
- Студенты, которым нужен цельный backend-проект для портфолио
Формат
- 10 модулей и 34 последовательных урока
- Короткая теория, проверочные вопросы и практические задания
- Один backend-проект развивается от первого эндпоинта до публикации
- Автоматическая проверка кода и API-сценариев
Что нужно на старте
- Базовый синтаксис Python: функции, условия и циклы
- Умение работать со строками, списками и словарями
- Начальное знакомство с классами и импортом модулей
- Установленный Python и умение ставить пакеты через pip
Автор курса
Алексей Малышкин
Разрабатываю образовательные материалы по программированию, машинному обучению и анализу данных. Темы: Python-разработка, аналитика, ML-инструменты (LangChain, vector databases, AI agents), компьютерное зрение. Стараюсь объяснять технические концепции понятно и структурировано. Ранее преподавал на Stepik и обучил более 2000 студентов. Мой профиль на Stepik - https://stepik.org/users/273781420/profile Мой телеграм для связи @alexey_latorn
Программа
01Как работает веб4 урока
02Первый работающий API3 урока
03Входные данные и Pydantic v24 урока
04CRUD как HTTP-контракт4 урока
05Проект перестаёт быть одним файлом3 урока
06Данные переживают перезапуск5 уроков
07Правила бронирования3 урока
08Тесты вместо ручного прокликивания3 урока
09Пользователи и доступ4 урока
10Roomly выходит в интернет1 урок
Отзывы
4 отзываКурс хороший, но на работе с базой запутался. Не всегда понимал, что писать в обработчике запроса, а что выносить отдельно. Тут бы ещё пару подробных примеров.
Спасибо за бесплатный курс
Показать ещё 1 отзывСвернуть
Для первого знакомства с FastAPI отлично. С авторизацией пока сложно, буду повторять.
Дополнительные материалы и практика
Задачи
- Что происходит после ввода адреса в браузере — задача по FastAPI
- URL, домен, IP, порт и localhost — задача по FastAPI
- HTTP-запрос и ответ — задача по FastAPI
- JSON — язык данных API — задача по FastAPI
- Проект FastAPI и первый GET — задача по FastAPI
- Path-параметры и типы — задача по FastAPI
- Query-параметры и фильтрация каталога — задача по FastAPI
- POST, JSON-тело и первая модель запроса — задача по FastAPI
- Ограничения полей и ошибки валидации — задача по FastAPI
- FastAPI: вложенная модель Pydantic и необязательное поле
- Модели создания и ответа — задача по FastAPI
- Создание ресурса: POST и статус 201 — задача по FastAPI
- Отсутствующий ресурс и HTTPException — задача по FastAPI
- FastAPI: PUT и PATCH для обновления ресурса без потери полей
- FastAPI: DELETE и завершение CRUD для каталога комнат
- FastAPI APIRouter: разнесите маршруты по модулям
- Зависимости через Depends — задача по FastAPI
- Настройки FastAPI из переменных окружения: задача
- Таблица, ORM-модель и Pydantic-схема — задача по FastAPI
- Engine, Session и база SQLite — задача по FastAPI
- Чтение и создание через SQLAlchemy 2 — задача по FastAPI
- FastAPI и база данных: обновление и удаление записи
- FastAPI и связь таблиц: бронирования одной комнаты
- Валидация интервала времени в FastAPI: задача
- Пересечение интервалов бронирования в FastAPI: задача
- FastAPI: создание бронирования и ответ 409 при конфликте
- Первый тест API через TestClient — задача по FastAPI
- Fixtures, временная база и dependency override — задача по FastAPI
- Тестирование ошибок FastAPI: отказ в бронировании
- Регистрация и хеширование пароля — задача по FastAPI
- Вход и JWT access token — задача по FastAPI
- Текущий пользователь как dependency — задача по FastAPI
- FastAPI: авторизация и отмена только своей брони
- Публикация Roomly и публичный URL — задача по FastAPI
Уроки
- Проект FastAPI и первый GET
- Path-параметры и типы
- Query-параметры и фильтрация каталога
- POST, JSON-тело и первая модель запроса
- Ограничения полей и ошибки валидации
- Модели создания и ответа
- Создание ресурса: POST и статус 201
- Отсутствующий ресурс и HTTPException
- Полное и частичное обновление
- Зависимости через Depends
- Engine, Session и база SQLite
- Чтение и создание через SQLAlchemy 2
- Первый тест API через TestClient
- Fixtures, временная база и dependency override
- Вход и JWT access token
- Текущий пользователь как dependency
