REST - revertable DELETE給出了一個關於如何在REST中對狀態進行模型更改的很好的介紹。基本上,如果您有一個狀態爲的資源,則只需將該資源的新版本與更新狀態字段配合使用。REST - 模型狀態轉換
在這個話題中,我想擴展這個模型。假設您有一種資源可以處於兩種狀態:1和2.與所引用的文章中描述的簡單模式相比,有三種從狀態1轉換到狀態2的轉換,而不是一種轉換。
我的問題是:你將如何在REST中建模狀態轉換?
我自己不能拿出一個類似於RPC的POST,這是不是很可能RESTian:通過使用過渡3.
POST http://server/api/x
target_state=2&transition=3
這改變了資源X從狀態1到狀態2
首先,非常感謝您的詳細解答。很酷。但是我仍然不確定每一次轉換都可以很容易地模擬爲一個狀態。我認爲中間國家和永久國家之間存在巨大差異。你覆蓋了第二組。關於第一組,舉一個例子:假設你可以通過3種方式從無家可歸者走向姿勢:你爲此付出代價,你繼承,或者你在一次樂透中獲勝。你是否也將這個模型作爲單獨的狀態進行建模?這是不是導致了國家的爆炸「只是爲了代表不同的國家的過渡?你怎麼看? –
[「擁有者」我的意思是「被盜」。如果您爲此付費或在彩票中獲勝,那麼您處於「所有者」狀態。]如果您的應用程序對您的應用程序採取了哪條路徑,那麼是的,您應該採用中間狀態,創建新的終端狀態或添加額外的狀態(如抵押資源)來表示差異。 – fumanchu
好吧,有道理。我只害怕由所有可能的過渡產物產生的「虛擬」狀態爆發。 –