Я зараз розробляю API HTTP, сподіваюсь зробити його максимально РЕСТЕВНІМ.
Є деякі дії, функціональність яких поширюється на декілька ресурсів, і колись їх потрібно скасувати.
Я подумав собі, це звучить як шаблон команди, але як я можу моделювати його в ресурс?
Я введу новий ресурс під назвою XXAction, як DepositAction, який буде створений через щось подібне
POST /card/{card-id}/account/{account-id}/Deposit
AmountToDeposit=100, different parameters...
це фактично створить новий DepositAction і активує його метод Do / Execute. У цьому випадку повернення 201 створеного HTTP-статусу означає, що дія була успішно виконана.
Пізніше, якщо клієнт бажає переглянути деталі дії, які він може
GET /action/{action-id}
Оновлення / PUT слід заблокувати, я думаю, тому що це не актуально.
А для того, щоб скасувати дію, я подумав використати
DELETE /action/{action-id}
який насправді викликатиме метод скасувати відповідний об'єкт та змінить його статус.
Скажімо, я задоволений лише одним Do-Undo, мені не потрібно переробляти.
Чи підходить цей підхід?
Чи є якісь підводні камені, причини не використовувати їх?
Це зрозуміло з POV клієнтів?