Вопрос на собеседовании · Fullstack-разработчик

Как спроектировать API для пользовательского сценария?

Короткий ответ, ключевые тезисы и ошибки, которых стоит избежать на интервью.

Обновлено 19 августа 2026 г.Встречается почти всегда
Fullstack-разработчикПрофессии и разделы
Короткий ответ

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

Для операций с ретраями важна идемпотентность: повтор не должен создавать второй платёж или заказ. Контракт эволюционирует добавлением совместимых полей, явной депрекацией и наблюдением за потребителями; скрытое изменение смысла поля опаснее отсутствия версии в URL.

01 · Структура ответа

Что важно сказать интервьюеру

Начните с определения, затем объясните механизм и закончите примером из практики. Для полного ответа раскройте эти тезисы:

API выражает сценарий, а не схему БД.
Ошибки и права — часть контракта.
Идемпотентность нужна для повторов и сетевых сбоев.
Эволюция должна сохранять совместимость.

02 · Пример

Как объяснить на практике

POST /orders принимает Idempotency-Key и возвращает тот же результат при повторе. Сервер проверяет права на корзину, валидирует остатки в транзакции и отдаёт структурированную ошибку, которую frontend показывает рядом с причиной, а не как общий «сбой».

Не заучивайте формулировку дословно. Свяжите принцип с задачей из собственного проекта — интервьюер почти наверняка попросит уточнить детали реализации и компромиссы.

03 · Ошибки

Чего избегать в ответе

Возвращать внутреннюю модель БД без контракта.
Считать любой POST автоматически идемпотентным.
Скрывать ошибки в HTTP 200.

04 · Углубление

Что могут спросить следом

  1. Когда нужна версия API?
  2. Как выбрать cursor pagination?
  3. Где валидировать вход?

Практика ответа

Ответьте вслух, а не про себя

Откроем тренировку сразу на этом вопросе. Выберите грейд, сформулируйте ответ и сравните его с подсказкой.

Потренировать ответ