【发布时间】:2015-09-24 13:09:55
【问题描述】:
我在 Office 365 REST API 中遇到了一些奇怪的分页问题。
当通过以下请求批量获取用户的所有事件时(当然,每次调用时更新skip参数):
https://outlook.office365.com/api/v1.0/users%2Ftest1@eveoh.onmicrosoft.com/Events/?$orderby=Start&$select=ID&$top=50&$skip=100
用户的日历中有 1000 多个事件,有时我每次都会收到相同的事件。在这种情况下,经过 666 次事件,具有讽刺意味的是。每次返回 odata.nextLink 并更新 skip 参数,但我返回的事件与上一页相同。该例程以无限循环结束,获取同一事件的更多事件。
另外,出于某种原因,我有时会收到比要求更大的批次。例如,根据以下请求,我得到 470 个事件,而预期为 250 个。
https://outlook.office365.com/api/v1.0/users%2Ftest1@eveoh.onmicrosoft.com/Events/?$orderby=Start&$select=ID&$top=250
有没有人也遇到过这些问题,如果有,您是如何解决的?
更多请求/响应跟踪示例说明问题can be found here。
【问题讨论】:
-
您是否尝试过提取较小的批次,例如每批次 10 或 20 条记录。
-
在我的回答下方查看您遇到的问题。
-
我还没有看到这个问题。如果
$top和$skip参数未得到遵守,则服务中的某个地方存在错误。如果您可以在发生这种情况时提供响应标头,这将很有帮助(如果您可以使用client-request-id和return-client-request-id标头为您的请求提供instrument,则更有帮助。 -
我创建了一个带有痕迹here 的 Gist。它已使用标题进行检测。它表明跳过许多事件的三个请求都导致返回相同的事件。不跳过(或不多)会导致不同的事件。
-
感谢您提供详细信息。我能够自己重现这一点。我会把这个交给我们的工程师。
标签: office365 outlook-restapi office365api