Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何最好地通过API通知客户端数据的更改_Api - Fatal编程技术网

如何最好地通过API通知客户端数据的更改

如何最好地通过API通知客户端数据的更改,api,Api,我的公司有一个内部API,其中包含大量的实际数据(目前为80MM的记录)。我有四个客户定期与我联系。主API调用向数据库中添加一个新项,验证其真实性,然后根据提交的项返回结构化的、经过分析的数据 随着时间的推移,当我们识别出更多与某个项目相关的数据时,我需要能够让我的客户知道记录已经更改 现在我有一个/recent端点,它返回自$timestamp以来更改的所有记录。这对于小型数据集来说是很好的,但是考虑到大量的事务,很容易得到一个超过一百万项的/最近的数据集,特别是如果有一个大型数据导入的话

我的公司有一个内部API,其中包含大量的实际数据(目前为80MM的记录)。我有四个客户定期与我联系。主API调用向数据库中添加一个新项,验证其真实性,然后根据提交的项返回结构化的、经过分析的数据

随着时间的推移,当我们识别出更多与某个项目相关的数据时,我需要能够让我的客户知道记录已经更改

现在我有一个
/recent
端点,它返回自
$timestamp
以来更改的所有记录。这对于小型数据集来说是很好的,但是考虑到大量的事务,很容易得到一个超过一百万项的/最近的数据集,特别是如果有一个大型数据导入的话

我的另一个想法是使用web钩子将数据推送到客户端,但问题是推送的数据太多。我的客户不一定需要对每一个变更的项目进行更新——也许他们只需要已经提交的更新

问题不在于代码,而在于设计模式或代码策略:

有哪些最佳策略可以通知我的客户更新的记录,而不必向我的客户大量发送不必要的请求或在投票中提供数百万条记录?

我使用了第三方API(如Amazon)对大型请求进行分页。如果数据集超过了页面限制,客户端需要为下一页发出另一个请求。这将与/最近的端点相结合

实际的实现类似于

{
  requestId: "foobar",
  page: 0,
  pages: 10,
  data: {
    ...
  }
}
客户端发出请求并获取第一页数据,然后向端点发送Requsted和页码。不知何故,您可能希望持久化对与requestId对应的数据的引用