如果有一個REST資源需要監視來自其他客戶端的更改或修改,那麼最好(也是最RESTful)的方式是什麼?什麼是監視REST資源更改的RESTful方式?
我這樣做的一個想法是通過提供特定資源來保持連接開放,而不是在資源尚未存在時立即返回。例如,給定資源:
/game/17/playerToMove
此資源上的「GET」可能會告訴我,這是我的對手輪到移動。而不是不斷輪詢這一資源,找出當輪到我運動,我可能會注意移動數(說5),嘗試檢索下一步的行動:
/game/17/move/5
在一個「正常」的REST模式,它似乎對此URL的GET請求將返回404(未找到)錯誤。然而,如果相反,服務器保持連接打開,直到我的對手發揮他的舉動,即:
PUT /game/17/move/5
那麼服務器會返回我的對手投入該資源的內容。這將爲我提供我需要的數據,以及當我的對手移動而不需要輪詢時的一種通知。
這種方案是RESTful嗎?或者它違反了某種REST原則?
「什麼是最簡單的方法來做到這一點,Scrappy?」 – 2012-11-06 10:26:15
您可以使用長輪詢,或將REST與將事件發送到客戶端的websocket服務結合使用。 – inf3rno 2015-05-31 19:32:08