algorithm - 您如何以 REST 方式获取复杂的记录子集?

标签 algorithm web-services rest

我有一个关于从 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/

相关文章:

arrays - 为什么/如何使用最长的正确前缀/后缀算法?

.net - 针对不受信任的 SSL 端点生成 WCF 代理

php - 我可以在 Kohana 中设置路由以仅匹配特定的 HTTP 方法(GET/POST/等)

api - REST API - 在单个请求中批量创建或更新

algorithm - 用算法计算最坏情况的时间复杂度

arrays - 使用多个索引 :[Int] 枚举多线性映射的 Swift 算法

algorithm - 预测数字相加的数字

java - 如何知道 Web 服务是否已启动

php - 使用 WSDL 构建用于 SOAP 的 PHP 数组

java - 无法使用 @Proxy 和 Jackson 创建 REST 响应