我正在编写一个网站,我希望在其中将页面标记为已读,但无法找出最 RESTful 的方式。
显然,要检索页面,客户端将发送 GET 请求,但是如果我随后将页面标记为已读,这将打破 GET 应该是幂等的规则 - 它现在正在更改服务器上的某些内容。
有一个更好的方法吗?
最佳答案
读取状态是资源的固有部分,还是只是服务器端跟踪工具?读者是否想要获得所有“已读”或“未读”文档的列表?如果用户下载了文档但决定稍后阅读,他们是否能够将文档标记为“未读”?
如果只是服务器端,那么标记一个 {user,resource}
就可以了每个 GET 请求读取的元组。如果每个用户的读取状态是资源的一部分,则需要在用户和资源之间进行客户端可写的多对多映射,并且这对映射(已读)或未映射(未读)。在这种情况下,我建议使用新资源来表示此状态,并允许客户端向该资源 URI 设置一个 true/false bool 值。是吧user@host/resource/read
或 /user/{user}/resource/read
或其他一些,这并不重要。
如果您希望自动设置此标志,并且您的客户端是 Web 浏览器,则在下载文档后,您将需要使用 AJAX 执行第二次请求(并且该选项卡可能已在特定时间段内可见)。
关于rest - "Marking as read"在 RESTful 应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4972907/