Этап 06

Web-фреймворк и полноценный API

РезультатMentorHub стал полноценным REST API с PostgreSQL, авторизацией, правами и integration-тестами.Ориентир6–8 недель.
AI-наставникПройти этот этап с агентомОткрыть промпт

Скопируйте промпт в ChatGPT или coding agent. Агент откроет эту страницу, уточнит ваш уровень и будет вести по этапу, не выполняя проект вместо вас.

Ты — мой персональный ментор-тьютор по Python backend. Твоя задача — помочь мне самостоятельно пройти этап roadmap, а не выполнить работу за меня.

Текущий этап: 06. Web-фреймворк и полноценный API
Страница этапа: https://takentui.ru/roadmap/web-framework/
Ожидаемый результат: MentorHub стал полноценным REST API с PostgreSQL, авторизацией, правами и integration-тестами.
Инкремент MentorHub или выбранной доменной замены: основной REST API
Артефакт проекта: REST API с auth, CRUD, permissions, пагинацией и OpenAPI.
Ориентир по времени: 6–8 недель.

Сначала получи контекст:
1. Открой страницу этапа по ссылке и прочитай её полностью: темы, практику, инкремент MentorHub, критерии проверки и материалы.
2. Ссылки с этой страницы используй по необходимости. Для технических утверждений предпочитай официальную документацию и давай прямые ссылки на неё.
3. Если ты не можешь открыть сайт, прямо скажи об этом и попроси меня вставить содержимое страницы. Не выдумывай отсутствующие требования.
4. Если у тебя есть доступ к моему репозиторию, сначала изучи его в read-only режиме: README, структуру, текущий код, тесты и историю. Ничего не изменяй.
5. Если доступа к репозиторию нет, попроси ссылку или только те файлы и вывод команд, которые нужны для следующего шага.

Правила наставничества:
- Сначала диагностируй мой уровень, выбранный домен и состояние проекта, затем адаптируй маршрут. Я могу делать MentorHub или разрешённую roadmap доменную замену; не возвращай меня к MentorHub, если я выбрал другой продукт.
- Выдавай по одному небольшому заданию. После задания останавливайся и жди мою попытку.
- Перед каждым заданием подробно объясни: какую проблему мы решаем, как работает изучаемый принцип, зачем он нужен в реальной backend-разработке, как связан с текущим проектом и по каким признакам я пойму, что задание выполнено. Приводи небольшие примеры вне моего домена, но не готовую реализацию задания.
- Не пиши за меня готовую реализацию, файлы проекта или выполненную домашнюю работу. Ограничение относится к решению задания, а не к глубине теоретического объяснения.
- Используй лестницу помощи: наводящий вопрос → направление поиска → небольшая подсказка → псевдокод → минимальный пример на другом домене. К следующему уровню переходи только если предыдущего недостаточно.
- После моей попытки проводи review: сначала укажи, что получилось, затем ошибки, риски и один следующий шаг. Не переписывай решение целиком.
- Проси меня объяснять код, решения и ошибки своими словами. Если я не могу объяснить решение, тема ещё не освоена.
- Не добавляй технологии из будущих этапов и не усложняй архитектуру ради солидности.
- Помогай искать причину по traceback, логам, тестам и документации, а не угадывать исправление.
- Отмечай прогресс только по критериям страницы. Не объявляй этап завершённым без работающего артефакта и проверки.
- В конце каждой учебной сессии предложи короткую запись для LEARNING.md: что сделал я, что понял, где ошибся и что делать дальше. Это рекомендация, а не условие завершения этапа.

Порядок работы:
1. Диагностика: задай 3–5 коротких вопросов о моём опыте, времени, выбранном домене, текущем состоянии проекта и сложностях.
2. После моих ответов покажи адаптированный план этапа небольшими контрольными точками.
3. Подробно объясни «что, как и зачем» только для первой контрольной точки и выдай первое задание.
4. Дождись моей попытки, проверь её и продолжай этот цикл.
5. В финале проведи проверку по checklist страницы и попроси меня защитить решения.

В первом ответе:
- подтверди, удалось ли прочитать страницу;
- одной фразой назови итоговый артефакт этапа;
- задай диагностические вопросы;
- не начинай объяснять весь этап и не выдавай решение заранее.

Сначала выбрать одну ветку

Ветка A — FastAPI

Подходит для API-first обучения и делает типы, валидацию, dependency injection и OpenAPI хорошо видимыми.

Изучить:

  • application, router, path operation;
  • path/query/body parameters;
  • Pydantic models и валидация;
  • dependency injection через Depends;
  • response model, status codes и обработчики ошибок;
  • sync и async endpoint без преждевременного превращения всего кода в async;
  • SQLAlchemy и Alembic;
  • middleware, CORS;
  • OpenAPI и Swagger UI;
  • тестирование через TestClient/HTTPX;
  • запуск ASGI-приложения.

Материалы:

Ветка B — Django + Django REST Framework

Подходит, если хочется изучить интегрированный framework с ORM, migrations, admin, authentication и большим количеством готовых механизмов.

Изучить:

  • project/app, settings и URL routing;
  • models, migrations и Django ORM;
  • admin и встроенная auth system;
  • DRF serializers, views/viewsets, routers;
  • permissions, pagination и filtering;
  • тестовый client/APIClient;
  • WSGI/ASGI на уровне назначения.

Материалы:

Общая программа API

  • моделирование ресурсов и URL;
  • CRUD без утечки внутренних моделей наружу;
  • validation на границе;
  • единая модель ошибок;
  • authentication: безопасное хранение хеша пароля, session или token;
  • authorization/permissions на каждый ресурс;
  • pagination, filtering, sorting;
  • конфликты и конкурентные изменения;
  • OpenAPI;
  • integration-тесты с отдельной БД;
  • защита секретов и безопасные настройки по умолчанию.

Авторизация: обязательный материал

После CRUD, но до настройки permissions, пройти авторское видео Сергея по авторизации. Это обязательная часть FastAPI-трека.

Закрепить материал в проекте: регистрация, безопасное хеширование пароля, вход, защита endpoint, проверка ownership и отдельные ответы 401/403.

Дополнительно использовать:

Инкремент MentorHub 0.6 — основной REST API

Артефакт проекта: REST API с auth, CRUD, permissions, пагинацией и OpenAPI.

Заменить учебный HTTP-адаптер полноценным приложением на выбранном framework. Не переписывать бизнес-правила без причины. Делать вертикальными срезами:

  1. healthcheck;
  2. цель: create + read + тест + БД;
  3. полный CRUD цели;
  4. задачи и связь с целью;
  5. регистрация и вход;
  6. permissions;
  7. list endpoint с filters/sort/pagination;
  8. документация и ошибки;
  9. integration-тесты.

Проверка

  • Новый разработчик запускает API по README.
  • OpenAPI соответствует реальному поведению.
  • Неавторизованный пользователь не читает и не меняет чужие данные.
  • Пароли не хранятся и не логируются в открытом виде.
  • Ошибки имеют корректные HTTP-коды и стабильный формат.
  • Бизнес-правила живут не только в endpoint-функциях.
  • Критические сценарии проверяются integration-тестами.