gpt4 book ai didi

javascript - REST API分页如何保证数据一致性

转载 作者:行者123 更新时间:2023-11-28 23:37:12 25 4
gpt4 key购买 nike

我正在移动客户端上构建一个即时消息程序,它通过 HTTP 请求与 RESTful API 进行交互。分页端点非常标准 - 它具有起始位置(偏移量)和页面中的项目数(限制)。当数据库可以快速更改时,我无法弄清楚如何通过分页确保 100% 的数据一致性。

例如,如果有十几个参与者,一秒钟内对话中可能会有十几个新消息。我认为猜测其中一些消息可以在 HTTP 分页请求从服务器返回时更改数据库并不牵强。幸运的是,由于这是一个信使,我不必考虑删除数据的可能性,而只考虑添加数据。

在我的研究中,以下两个链接很有帮助但没有提供明确的解决方案:

How to ensure data integrity in paginated REST API?

How to implement robust pagination with a RESTful API when the resultset can change?

我能想到的唯一可能的解决方案是使用先前获取的页面中最后一个对象的时间戳。因此 HTTP 查询会将时间戳作为参数,服务器将返回在该时间戳之后创建的对象页面。

有没有我没有发现的潜在问题,或者更好的解决方案?

最佳答案

看来我想到的方法有个名字——cursor based pagination。

下面的链接有很好的图形描述和解释,还有一个 php 示例。

http://www.sitepoint.com/paginating-real-time-data-cursor-based-pagination/

Django Framework 中还有一个有用的指南,比较了两种不同的分页技术(LimitOffsetPagination 和 CursorPagination)。

http://www.django-rest-framework.org/api-guide/pagination/

基于游标的分页需要一个唯一的、不变的项目排序。 Facebook 和 Twitter 使用一些生成的 ID。至于我,我决定在创建对象时简单地使用时间戳,因为它支持高达毫秒的精度。现在应该足够好了。

关于javascript - REST API分页如何保证数据一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35462966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com