rest - "Marking as read"在 RESTful 应用程序中

标签 rest

我正在编写一个网站,我希望在其中将页面标记为已读,但无法找出最 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/

相关文章:

xml - 具有大量属性的 MarkLogic REST API 搜索

java - Spring MVC 请求映射明确禁止参数

api - 使用 vmware vCenter 7 Rest api 导出虚拟机的步骤是什么

json - Golang 序列化/反序列化一个空数组而不是 null

java - 将 ZonedDateTime 类型转换为 Gson

c# - PayPal Rest API - 更新计费计划返回 URL

java - 如何设置基本的 Jersey/Grizzly 2.21 SSL 启动配置

node.js - Nodejs Express - 大块在 res.on ('data' 中被记录两次)

spring - 我的api/登录帖子在Spring安全的Grails 3上遭到未授权

java - 如何解决 HTTP Status 500 - ContainerException java.lang.NoSuchMethodError 错误