Предложите GET /gnomes, POST /gnomes и DELETE /gnomes/{id}. Запрет удаления последнего гномика должен атомарно проверяться на сервере, включая параллельные запросы.
Как бы ты подошел к проектированию RESTful API для сущности «гномик» (список, создание и удаление по одному, нельзя удалить последнего)?
Предложите GET /gnomes, POST /gnomes и DELETE /gnomes/{id}. Запрет удаления последнего гномика должен атомарно проверяться на сервере, включая параллельные запросы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Предложите GET /gnomes, POST /gnomes и DELETE /gnomes/{id}. Запрет удаления последнего гномика должен атомарно проверяться на сервере, включая параллельные запросы.
Для списка задайте пагинацию, для создания — валидацию и 201 Created с идентификатором, для удаления — 204 при успехе и понятную ошибку бизнес-конфликта. Уточните, к какому владельцу или группе относится правило «последний». В транзакции блокируйте общую строку этой группы, затем проверяйте количество и удаляйте запись; одного предварительного COUNT недостаточно. Все операции изменения состава должны соблюдать тот же протокол. Проверяйте права пользователя и отдельно определите поведение повторного DELETE.