RESTful应用程序中的“标记为已读”

时间:2011-02-11 18:57:12

标签: rest

我正在编写一个网站,我希望将网页标记为已阅读,但无法找出最常用的REST方式。

显然,要检索页面,客户端将发送一个GET请求,但是如果我然后将页面标记为已读,则会破坏GET应该是幂等的规则 - 它现在正在改变服务器上的某些内容。

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

读取状态是资源的固有部分,还是仅仅是服务器端跟踪工具?读者是否希望获得所有“已读”或“未读”的文档列表?用户是否可以将文档标记为“未读”,如果他们下载但稍后决定阅读它?

如果只是服务器端,则可以在每个GET请求上将{user,resource}元组标记为已读。如果每用户读取状态是资源的一部分,则需要在用户和资源之间进行客户端可写的多对多映射,并且映射(读取)或不映射(未读取)。在这种情况下,我建议使用新资源来表示此状态,并允许客户端向该资源URI PUT一个true / false布尔值。无论是user@host/resource/read还是/user/{user}/resource/read还是其他,都无关紧要。

如果您希望自动设置此标志,并且您的客户端是Web浏览器,则在下载文档后您需要使用AJAX执行第二次请求(并且可能在特定的已用时间内显示该选项卡)。