Как бы ты подошел к проектированию RESTful API для сущности «гномик» (список, создание и удаление по одному, нельзя удалить последнего)?

Предложите GET /gnomes, POST /gnomes и DELETE /gnomes/{id}. Запрет удаления последнего гномика должен атомарно проверяться на сервере, включая параллельные запросы.

Короткий ответ

Что ответить на собеседовании

Предложите GET /gnomes, POST /gnomes и DELETE /gnomes/{id}. Запрет удаления последнего гномика должен атомарно проверяться на сервере, включая параллельные запросы.

Подробный разбор

Ответ с пояснениями

Предложите GET /gnomes, POST /gnomes и DELETE /gnomes/{id}. Запрет удаления последнего гномика должен атомарно проверяться на сервере, включая параллельные запросы.

Для списка задайте пагинацию, для создания — валидацию и 201 Created с идентификатором, для удаления — 204 при успехе и понятную ошибку бизнес-конфликта. Уточните, к какому владельцу или группе относится правило «последний». В транзакции блокируйте общую строку этой группы, затем проверяйте количество и удаляйте запись; одного предварительного COUNT недостаточно. Все операции изменения состава должны соблюдать тот же протокол. Проверяйте права пользователя и отдельно определите поведение повторного DELETE.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее