Я нахожусь в процессе разработки HTTP API, надеюсь, сделать его максимально RESTful.
Есть некоторые действия, функциональность которых распространяется на несколько ресурсов, и иногда их нужно отменить.
Я подумал, что это звучит как шаблон команды, но как я могу смоделировать его в ресурс?
Я представлю новый ресурс под названием XXAction, такой как DepositAction, который будет создаваться через что-то вроде этого
POST /card/{card-id}/account/{account-id}/Deposit
AmountToDeposit=100, different parameters...
это фактически создаст новый DepositAction и активирует его метод Do / Execute. В этом случае возвращение статуса 201 Created HTTP означает, что действие было успешно выполнено.
Позже, если клиент хочет посмотреть детали действия, он может
GET /action/{action-id}
Я думаю, что обновление / PUT должно быть заблокировано, потому что здесь это не актуально.
И чтобы отменить действие, я подумал об использовании
DELETE /action/{action-id}
который на самом деле вызовет метод Undo соответствующего объекта и изменит его статус.
Допустим, я доволен только одним Do-Undo, мне не нужно повторять.
Этот подход в порядке?
Есть ли подводные камни, причины не использовать его?
Это понятно из POV клиентов?