我正在网络服务上实现分页。我的第一个想法是使用查询参数 page
和 size
,如 Spring Data。
但是,我们的一些设计基于 google webservice api。我注意到他们使用分页标记,每个页面结果都包含一个 nextPageToken
。使用这种方法有什么优点?改变数据?这样的 token 中会编码什么样的信息?
最佳答案
使用偏移量分页时,在请求之间插入和删除数据将导致行被跳过或包含两次。如果您能够跟踪之前返回的内容的 token (通过 key 或其他方式),您可以保证不会两次返回相同的结果,即使请求之间存在插入/删除也是如此。
我有点不确定如何对 token 进行编码,但对于单个表,至少似乎您可以使用主键的编码版本作为限制。 “我刚刚返回了 key=200 之前的所有内容。下次我只会返回 200 之后的内容。”我想这假设在请求 1 和 2 之间插入的新项目将被赋予比现有 key 更大的 key 。
关于web-services - 为什么使用分页标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35369966/