REST 分页内容重复

REST pagination content duplicates

创建 REST 应用程序时,该应用程序将 return 项目集合(包含帖子集合的主题),从新到旧排序。

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

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

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

这方面的最佳做法是什么?

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

如果这真的很重要,您必须将第一页中的所有内容的 ID 放入对第二页的调用中,并一次又一次。 HATEOAS 可以帮助你做这样的事情......但它可能会变得非常混乱,并且当你请求第 5 页时,鉴于当前的排序,仍然会在第 1 页上弹出......你如何处理它?

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

对于这个问题,没有一种放之四海而皆准的解决方案。您必须针对您打算实现的用户体验进行设计。