感谢您对我的问题的回复:Is this a bug of Box API v2 when getting events
这是一个与此相关的新问题。问题是我无法可靠地使用我之前调用中获得的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?
非常感谢。
答案 0 :(得分:2)
Box / events端点专注于为您提供与Box帐户相关的所有事件的高度可靠的列表。事件根据我们称之为stream_position的时间顺序列表进行注册。当您点击/ events API并传入stream_position时,我们会回复您在该流位置之前发生的事件,直到当前的stream_position或chunk_size,以较小者为准。由于时间滞后以及我们倾向于确保您不会错过某些事件,因此在调用/ events API时可能会收到重复事件。您可能还会收到一些事件,这些事件看起来就像您之前收到的事件。我们的理念是,你最好知道发生了什么,而不是在黑暗中,错过了重要的事情。
答案 1 :(得分:2)
Box事件目前会在大约5秒后给你一个窗口,这样你就不会错过任何一个事件。
我们已经考虑过将我们发送给你的事件延迟大约5秒钟并对我们这边的事件进行重复删除,但此时我们已经将拨号更加贴近实时。如果你想要一个完全去掉的流,请告诉我们,这个速度要慢一些。
目前,(测试版)如果您编写客户端以检查重复事件并丢弃它们,那将是最好的。我们即将向有效负载添加event_id,以便您可以对其进行重复数据删除。在那之前,你将不得不查看一堆字段,具体取决于事件类型......它可能更具挑战性。
答案 2 :(得分:0)
为了帮助您确定某个事件是否重复,我们现在已经为每个事件添加了一个唯一的event_id。我们的意图是event_id允许您去除从后续GET /事件调用中收到的响应。
您可以在更新的文档here中看到这一点,包括示例有效负载。