Estoy en el proceso de diseñar una API HTTP, con la esperanza de que sea lo más RESTANTE posible.
Hay algunas acciones cuya funcionalidad se extiende sobre unos pocos recursos, y en algún momento debe deshacerse.
Pensé para mí mismo, esto suena como un patrón de comando, pero ¿cómo puedo modelarlo en un recurso?
Introduciré un nuevo recurso llamado XXAction, como DepositAction, que se creará a través de algo como esto
POST /card/{card-id}/account/{account-id}/Deposit
AmountToDeposit=100, different parameters...
esto creará una nueva DepositAction y activará su método Do / Execute. En este caso, devolver un estado HTTP creado 201 significa que la acción se ha ejecutado con éxito.
Más tarde, si un cliente desea ver los detalles de la acción, puede
GET /action/{action-id}
Supongo que la actualización / PUT debería estar bloqueada, porque no es relevante aquí.
Y para deshacer la acción, pensé en usar
DELETE /action/{action-id}
que en realidad llamará al método Deshacer del objeto relevante y cambiará su estado.
Digamos que estoy contento con un solo deshacer, no necesito rehacer.
¿Está bien este enfoque?
¿Hay algún inconveniente, razones para no usarlo?
¿Se entiende esto desde el punto de vista de los clientes?