Sto progettando un'API HTTP, spero di renderla il più RESIDENTE possibile.
Ci sono alcune azioni la cui funzionalità si estende su poche risorse e a volte deve essere annullata.
Ho pensato a me stesso, questo suona come un modello di comando, ma come posso modellarlo in una risorsa?
Introdurrò una nuova risorsa chiamata XXAction, come DepositAction, che verrà creata attraverso qualcosa del genere
POST /card/{card-id}/account/{account-id}/Deposit
AmountToDeposit=100, different parameters...
questo creerà effettivamente un nuovo DepositAction e attiverà il suo metodo Do / Execute. In questo caso, la restituzione di uno stato HTTP 201 creato significa che l'azione è stata eseguita correttamente.
In seguito, se un cliente desidera esaminare i dettagli dell'azione, può farlo
GET /action/{action-id}
L'aggiornamento / PUT dovrebbe essere bloccato, suppongo, perché non è rilevante qui.
E per annullare l'azione, ho pensato di utilizzare
DELETE /action/{action-id}
che in realtà chiamerà il metodo Undo dell'oggetto rilevante e ne modificherà lo stato.
Diciamo che sono contento di un solo Do-Undo, non ho bisogno di ripetere.
Questo approccio va bene?
Ci sono insidie, ragioni per non usarlo?
Questo è compreso dal punto di vista dei clienti?