skip token 如何处理电子邮件删除案例

How does skip token take care of email deletion case

所以我从图 API 得到的跳过标记是一个数字,根据我的理解(我可能是错的),它表示需要跳过多少封电子邮件。

在我们的应用程序中,我们将跳过令牌存储在 db/memory 中,以便我们可以获取下一页电子邮件。因此,如果说用户当前的跳过令牌是 100,并且在我们使用跳过令牌 100 向服务器发送请求之前,该用户删除了 10 封电子邮件,那么如果仍然使用那 100 个跳过令牌会发生什么?

由于我不确定如何处理这种用户删除电子邮件的情况,我们的应用程序的工作方式是:我们总是在跳过标记上做一个减号(如 -10),并检查我们是否可以找到当前响应和先前响应之间的任何电子邮件或时间戳重叠,如果没有重叠,我们将对跳过令牌进行另一个减去。这有点像倒着走。在找到重叠之前,我们停止做负号。

有意义吗?到目前为止,我注意到一些跳过令牌的响应将 nextLink 设为空,而用户的收件箱中仍有新电子邮件。此外,我们错过了几封电子邮件大约半年(这意味着电子邮件在用户的收件箱中,但我们的应用程序未获取)。

增量查询(跟踪更改)API 可能更适合您的需要。它有效地允许您在某人收件箱的更改日志中保留 "bookmark"。

例如您可以保留从调用 /messages/delta 返回的 deltaLink,而不是保留跳过标记。当您使用 deltaLink 再次调用 API 时,您将获得自上次调用 API 以来的一组更改 + 一个新的 deltaLink。这使您可以 "in sync" 了解您正在监控的收件箱中发生的变化。

API 参考文档在这里: https://docs.microsoft.com/en-us/graph/delta-query-overview