Академия Онлайн

Проектирование backend API

Курс помогает проектировать API, которые удобно использовать, тестировать и поддерживать после релиза. Студенты учатся думать не только о коде endpoint-а, но и о контракте, ошибках, документации и эксплуатации.

Для кого курс

  • Backend-разработчики начального и среднего уровня.
  • Frontend-разработчики, которым нужно лучше понимать API-контракты.
  • QA-инженеры, пишущие API-тесты.
  • Технические лиды учебных проектов.

Требования

  • Понимание HTTP на базовом уровне.
  • Опыт написания простых веб-приложений.
  • Умение читать JSON.
  • Желательно знать основы авторизации.

Неделя 1. Контракт и структура endpoint-ов

Темы

  • Ресурсы и действия.
  • Методы HTTP и их семантика.
  • Именование endpoint-ов.
  • Query-параметры, path-параметры и body.
  • Единый формат ответа.
  • Пагинация, сортировка и фильтрация.
  • OpenAPI как договор между командами.

Практика

  • Спроектировать API каталога курсов.
  • Разобрать плохие имена endpoint-ов.
  • Добавить пагинацию к списку объектов.
  • Описать примеры запросов и ответов.

Домашнее задание

Подготовить черновой API-контракт для сервиса учебных программ: список курсов, карточка курса, создание черновика и публикация.

Неделя 2. Валидация, авторизация и ошибки

Темы

  • Проверка входных данных на границе приложения.
  • Разница между 400, 401, 403, 404, 409 и 500.
  • Структура error response.
  • Роли и минимальные права.
  • Токены и срок действия.
  • Rate limiting.
  • Логирование ошибок без утечки секретов.

Практика

  • Описать ошибки для endpoint-а создания курса.
  • Разделить права автора, редактора и администратора.
  • Добавить примеры невалидных запросов.
  • Составить таблицу кодов ответа.

Домашнее задание

Сделать спецификацию ошибок для учебного API: формат, коды, сообщения для пользователя и диагностические поля для разработчика.

Неделя 3. Версионирование и эксплуатация

Темы

  • Совместимые и несовместимые изменения.
  • Версионирование через URL и заголовки.
  • Deprecation policy.
  • Health checks и readiness.
  • Метрики и трассировка.
  • Документация для потребителей API.
  • Postman/HTTP-файлы для ручной проверки.

Практика

  • Найти breaking changes в наборе правок.
  • Подготовить health endpoint.
  • Написать краткий changelog API.
  • Составить smoke-test сценарий.

Домашнее задание

Провести ревью учебного API перед запуском: найти проблемы контракта, ошибок, безопасности и документации.

Финальный проект

Студенты проектируют API для платформы курсов:

  • Каталог и карточка курса.
  • Черновики программ.
  • Публикация и откат версии.
  • Роли редактора и администратора.
  • Формат ошибок и примеры запросов.
  • Минимальный набор smoke-тестов.

Контрольные вопросы

  • Почему endpoint должен быть предсказуемым?
  • Когда возвращать 403, а когда 404?
  • Чем опасны подробные 500-ошибки?
  • Как понять, что изменение API ломающее?
  • Зачем документации нужны реальные примеры?

Лабораторные работы

Лабораторная 1. Контракт каталога

Студент проектирует API каталога курсов: список, карточка, фильтрация, сортировка и пагинация. Нужно описать примеры запросов и ответов.

Проверяется:

  • предсказуемые URL;
  • правильные HTTP-методы;
  • единый формат ответа;
  • понятная пагинация;
  • отсутствие лишних полей.

Лабораторная 2. Ошибки и роли

Нужно описать поведение API для разных ролей: гость, студент, редактор и администратор. Для каждого сценария указываются статусы и body ошибки.

Проверяется:

  • различие 401 и 403;
  • отсутствие утечки внутренних деталей;
  • единый формат ошибок;
  • понятные сообщения;
  • связь прав с бизнес-сценариями.

Лабораторная 3. Ревью версии API

Студент получает список изменений и должен определить, какие из них ломают совместимость, а какие можно выпускать без новой версии.

Проверяется:

  • понимание backward compatibility;
  • аккуратный changelog;
  • deprecation-план;
  • smoke-test сценарий;
  • коммуникация с потребителями API.

Критерии оценки

  • API можно понять по документации без устных пояснений.
  • Ошибки помогают исправить запрос.
  • Контракт не раскрывает внутреннюю реализацию.
  • Версионирование имеет понятные правила.
  • Примеры запросов соответствуют описанной схеме.

Типичные ошибки

  • Использовать глаголы везде вместо ресурсов.
  • Возвращать 200 для любой ошибки.
  • Менять формат ответа без версии.
  • Добавлять поля “на всякий случай”.
  • Писать документацию без примеров.

Дополнительные темы

  • OpenAPI и генерация клиентов.
  • Contract testing.
  • Idempotency keys.
  • Rate limit headers.
  • Correlation ID для трассировки запросов.

Результат

Студент сможет описать API-контракт, продумать ошибки, подготовить минимальную документацию для frontend-команды и сделать API более удобным для эксплуатации.