我有一个关于从 RESTful 服务中获取“随机”可用内容 block 的问题,而不复制客户端已经缓存的内容。我怎样才能以 RESTful 的方式做到这一点?
我正在提供大量项目(带有文本和 URL 的小文章)。让我们假设它是: /API/文章/
我的(软件)客户想要获得可用内容的随机 block 。太多了,无法将它们全部加载到客户端上。他们没有自然的秩序,所以这不是他们可以要求最新的情况。相反,客户可能会给出大约 6-10 个属性来“提示”他们希望看到什么类型的文章(例如流行、最近、趋势...)。
随着时间的推移,客户端获得越来越多的内容,但在服务器上我不知道他们已经拥有什么,并且因为它们是随机发送的,所以我不能只传递他们拥有的“最新”内容。
我可以想象发送本地存储内容的 GUID。客户端仅在本地存储 50-100 个。它足够小,可以填充到 POST 变量中,但不能填充到 GET 查询字符串中。
设计这个的简洁方法是什么?
要点:
- 数据没有逻辑顺序
- 客户端必须在本地缓存内容
- 每个项目都有一个 GUID
- 想要避免下拉重复项
最佳答案
如果数据真正以随机顺序保存,您将永远无法使这项工作令人满意(记住 Dilbert RNG Effect );您需要为特定客户修复订单,以便他们可以正确地翻页。不过这很容易做到;只需将该特定顺序作为资源本身即可;在这一点上,你有一个自然的(如果可能是合成的)排序并且可以使用正常的分页技术。
要注意的主要事情是,当您执行初始查询时,您将创建一个资源以响应 GET:您可能应该使用一个资源名称,它是查询参数的散列(包括客户端的identity 如果这很重要)这样如果有人连续两次执行相同的查询,他们将获得相同的资源(因此保持适当的幂等性)。您总是可以在超时后删除资源,而不需要手动处理……
关于algorithm - 您如何以 REST 方式获取复杂的记录子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12707526/