REST分页内容重复

时间:2015-03-02 09:45:43

标签: rest collections pagination hateoas

创建REST应用程序时,它将返回一组项目(带有帖子集合的主题),并从新旧分类。

如果将执行HATEOAS原则并且所有内容将在页面上分块,则客户端将获得当前页面ID,偏移量,数据限制以及指向第一页,当前页和下一页的链接。

从下一页获取数据没有问题,但是如果有人在客户端正在阅读当前页面时添加了内容 - 数据将在收集开始时被推送,当前页面的最后一项将被移动到下一页

如果您只是跳过之前已经加载的帖子,您将在下一页获得较少的项目数量。有一种方法可以在列表开头和增量偏移量中计算推送项目的数量。

对此最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

不使用偏移索引,而是跳过指示第一个不包含的值(或要包括的第一个值)的标记是一种很好的技术,前提是该值对于结果集中的每个项都是唯一的,并且是基于可订购字段的在当前的排序。但它没有完美无瑕。通常这并不重要。

如果真的很重要,你必须将第一页中所有内容的ID放在第二页的调用中,并且一次又一次。 HATEOAS帮助你做这样的事情...但它可能会变得非常混乱,当你提出第5页的请求当前排序时,第1页仍会弹出一些东西......你用它做什么?

在UI中避免欺骗的另一个技巧是使用自我或规范链接关系来唯一地标识页面中的资源,并将这些资源与UI中的现有资源进行比较。使用最新匹配资源更新UI通常是一项简单的任务。这当然给客户带来了一些负担。

这个问题没有一个适合所有解决方案。您必须为要实现的UX设计。