Выбор ответа Junior Проектирование API обновлено

Как оформить отмену заказа

Вопрос

Нужен эндпоинт отмены заказа: меняется статус, возвращаются деньги, уходит письмо. Какой вариант наименее удачный?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: GET /orders/981/cancel. GET должен быть безопасным: ссылку может открыть краулер или prefetch, и заказ отменится сам.

Варианты ответа

  1. POST /orders/981/cancel
  2. GET /orders/981/cancelправильный ответ
  3. PATCH /orders/981 с телом {"status": "cancelled"}
  4. POST /orders/981/cancellations

Разбор

GET должен быть безопасным: ссылку может открыть краулер или prefetch, и заказ отменится сам. Остальные варианты допустимы: действие как подресурс через POST, смена статуса через PATCH, или создание ресурса «отмена». Какой из них выбрать, это вопрос соглашений в команде.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.