1

我有一个关于从 RESTful 服务获取“随机”可用内容块的问题,而不复制客户端已经缓存的内容。如何以 RESTful 方式执行此操作?

我提供了大量的项目(带有文本和网址的小文章)。让我们假设它是:/api/article/

我的(软件)客户希望获得可用的随机块。太多了,无法将它们全部加载到客户端上。他们没有自然的顺序,所以这不是他们可以要求最新的情况。相反,客户可能会给出大约 6-10 个属性来“提示”他们希望看到的文章类型(例如,流行的、最近的、流行的……)。

随着时间的推移,客户获得的内容越来越多,但在服务器上我不知道他们已经拥有什么,而且因为它们是随机发送的,所以我不能只传递他们拥有的“最新”内容。

可以想象,我可以发送本地存储的 GUIDS。客户端仅在本地存储 50-100 个。这足够小,可以填充到 POST 变量中,但不能填充到 GET 查询字符串中。

设计这个的干净方法是什么?

关键点:

  • 数据没有逻辑顺序
  • 客户端必须在本地缓存内容
  • 每个项目都有一个 GUID
  • 想要避免下拉重复
4

1 回答 1

2

如果数据真正保持随机顺序,您将永远无法令人满意地完成这项工作(请记住Dilbert RNG 效应);您需要修复特定客户的订单,以便他们可以正确地翻页。不过这很容易做到;只是使特定的顺序成为资源本身;此时,您已经获得了自然的(如果可能是合成的)排序,并且可以使用正常的分页技术。

需要注意的主要事情是,当您执行初始查询时,您将创建一个资源以响应 GET:您可能应该使用作为查询参数哈希的资源名称(包括客户端的身份,如果很重要),因此如果有人连续两次执行相同的查询,他们将获得相同的资源(因此保持适当的幂等性)。您始终可以在超时后删除资源,而无需手动处置……</p>

于 2012-10-03T12:25:36.403 回答