Jestem w trakcie projektowania interfejsu API HTTP, mam nadzieję, że uczynię go możliwie jak najbardziej REST.
Istnieje kilka działań, których funkcjonalność rozciąga się na kilka zasobów i czasem trzeba je cofnąć.
Pomyślałem sobie, że to brzmi jak wzorzec poleceń, ale jak mogę zamodelować go w zasób?
Przedstawię nowy zasób o nazwie XXAction, taki jak DepositAction, który zostanie utworzony poprzez coś takiego
POST /card/{card-id}/account/{account-id}/Deposit
AmountToDeposit=100, different parameters...
spowoduje to utworzenie nowej operacji DepositAction i aktywację jej metody Do / Execute. W takim przypadku zwrócenie statusu 201 Utworzono HTTP oznacza, że akcja została wykonana pomyślnie.
Później, jeśli klient chce przyjrzeć się szczegółom akcji, może
GET /action/{action-id}
Wydaje mi się, że aktualizacja / PUT powinna zostać zablokowana, ponieważ tutaj nie ma to znaczenia.
Aby cofnąć akcję, pomyślałem o użyciu
DELETE /action/{action-id}
który faktycznie wywoła metodę Cofnij odpowiedniego obiektu i zmieni jego status.
Powiedzmy, że jestem zadowolony z tylko jednego cofania, nie muszę tego robić ponownie.
Czy to podejście jest w porządku?
Czy są jakieś pułapki, powody, aby z niego nie korzystać?
Czy to rozumie się z POV klientów?