如何最好地通过API通知客户数据的变化

时间:2013-10-07 23:59:16

标签: api

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

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

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

我的另一个想法是使用Web钩子将数据推送到客户端,但随后问题就变得过多了。我的客户不一定需要更改每个更改的项目 - 可能他们只需要他们已经提交的项目。

问题不在于代码,更多的是关于设计模式或代码策略:

有什么最佳策略可以通知我的客户更新的记录,而不会给客户带来不必要的请求或提供数百万条投票记录?

1 个答案:

答案 0 :(得分:0)

我使用了对大量请求进行分页的第三方API(例如亚马逊)。如果数据集超出页面限制,则客户端需要再次请求下一页。这将与/ recent端点结合使用。

实际的实现类似于

{
  requestId: "foobar",
  page: 0,
  pages: 10,
  data: {
    ...
  }
}

客户端发出请求并获取第一页数据,然后向端点发送requstId和页码。不知何故,你想要持久引用与requestId相对应的数据。