我正在网络服务上实施分页。我的第一个想法是使用查询参数page
和size
,就像Spring Data一样。
但是,我们将一些设计基于google webservice apis。我注意到他们使用分页令牌,每个页面结果都包含nextPageToken
。使用这种方法有什么好处?改变数据?在这样的令牌中会编码什么样的信息?
答案 0 :(得分:1)
当使用偏移量进行分页时,在请求之间插入和删除数据将导致行被跳过或包含两次。如果您能够跟踪之前返回的令牌(通过密钥或其他内容),则可以保证您不会两次返回相同的结果,即使请求之间存在插入/删除。
我对你如何编码令牌有点不确定,但至少对于单个表,你似乎可以使用主键的编码版本作为限制。 "我刚刚在key = 200之前返回了所有内容。下次我只会在200之后退货。"我想这假设在请求1和2之间插入的新项目将被赋予比现有密钥更大的密钥。
答案 1 :(得分:0)
将不透明字符串用于分页令牌的一个原因是,您可以在不破坏客户端的情况下更改分页的实现方式。像页面一样的查询参数(我假设您的意思是页码)对您的客户是透明的,并允许他们对其进行假设。