2011-02-11 90 views
0

我正在編寫一個網站,希望將頁面標記爲已讀過的頁面,但無法找出最符合REST風格的方式。在REST風格的應用程序中「標記爲已讀」

顯然要檢索頁面,客戶端將發送一個GET請求,但是如果我然後將頁面標記爲已讀,這就違反了GET應該是冪等的規則 - 它現在正在改變服務器上的某些內容。

有沒有更好的方法來做到這一點?

+0

怎麼樣一個POST,我的意思是,有多少種請求類型。 – Arvin 2011-02-11 20:58:14

回答

2

閱讀狀態是資源固有的一部分,還是僅僅是服務器端的跟蹤工具?讀者是否希望獲得所有「已讀」或「未讀」文檔的列表?用戶是否可以將文檔標記爲「未讀」,如果他們下載,但決定稍後閱讀?

如果它只是服務器端,那麼在每個GET請求上標記一個{user,resource}元組就可以了。如果每個用戶的讀取狀態是資源的一部分,則需要用戶和資源之間可以進行客戶端可寫的多對多映射,並且這對映射(讀)或不讀(未讀)。在這種情況下,我建議使用新資源來表示這種狀態,並允許客戶端向該資源URI發佈真/假布爾值。不管是[email protected]/resource/read還是/user/{user}/resource/read或其他,這並不重要。

如果您希望自動設置此標誌,並且您的客戶端是Web瀏覽器,則需要在下載文檔時使用AJAX執行第二個請求(也許該標籤對於特定的已過時期)。

相關問題