2

感谢您对我的问题的回复:这是 Box API v2 获取事件时的错误吗

这是一个与此相关的新问题。问题是我不能可靠地使用从以前的调用中获得的 next_stream_position 来跟踪事件。

鉴于这种情况:

给定以下两个 GET HTTP 查询:

1. GET https://api.box.com/2.0/events?stream_position=1336039062458

这个返回 JSON 文件,其中包含一个文件条目 myfile.pdf 和下一个流位置 = 1336039062934

2. GET https://api.box.com/2.0/events?stream_position=1336039062934

此调用使用我从第一次调用中获得的流位置。但是,它返回的 JSON 包含与第一次调用完全相同的 myfile.pdf 文件条目。

我认为如果第一个调用给出了一个流位置,它应该被用作那个确切时间的标记(比如:TIme A)。如果我在后续查询中使用该流位置,则不应返回“时间 A”之前的任何事件。

这是一个错误吗?还是我以错误的方式使用 API?

非常感谢。

4

3 回答 3

2

Box 事件目前为您提供大约 5 秒过去的窗口,这样您就不会错过某些事件。

我们曾考虑将我们发送给您的事件延迟大约 5 秒,并对我们这边的事件进行重复数据删除,但在这一点上,我们已经将转盘更接近实时。如果您更喜欢完全重复数据删除的流,请告诉我们,这样会更慢。

目前,(在测试版中)如果您编写客户端来检查重复事件并丢弃它们,那将是最好的。我们即将向有效负载添加一个 event_id,以便您可以对其进行重复数据删除。在那之前,您将不得不查看一堆字段,具体取决于事件类型……这可能更具挑战性,值得。

于 2012-05-03T19:38:25.777 回答
2

Box 的 /events 端点专注于向您提供与您的 Box 帐户相关的所有事件的高度可靠的列表。事件是针对我们称为 stream_position 的时间序列列表注册的。当您点击 /events API 并传入一个 stream_position 时,我们会以稍早于该流位置的事件响应您,直到当前的 stream_position 或 chunk_size,以较小者为准。由于时间滞后和我们希望确保您不会错过某些事件的偏好,当您调用 /events API 时,您可能会收到重复的事件。您可能还会收到看起来像是您已经收到的“之前”事件的事件。我们的理念是,您最好知道发生了什么,而不是在黑暗中错过重要的事情。

于 2012-05-03T17:43:18.857 回答
0

为了帮助您确定事件是否重复,我们现在为每个事件添加了一个唯一的 event_id。我们的意图是 event_id 将允许您对从后续 GET /events 调用中收到的响应进行重复数据删除。

您可以在此处的更新文档中看到这一点,包括示例有效负载。

于 2012-05-10T08:12:19.047 回答