Отмена заказа через GET /orders/17/cancel: чем опасен такой контракт
В сервисе есть ручка отмены заказа, реализованная как GET /orders/17/cancel. Она меняет статус заказа на «отменён».
Почему это плохое решение?
- Проблема только в названии пути: по правилам REST он должен быть существительным — /cancellation
- GET считается безопасным методом: его повторяют ретраи, кэшируют прокси, дёргают превью-боты
- GET не может отдавать тело ответа, поэтому клиент не узнает результат отмены заказа
- GET нельзя использовать с путями, в которых есть идентификатор конкретного ресурса
