Office 365 Calendar API的分页问题

时间:2015-09-24 13:09:55

标签: office365 outlook-restapi office365api

我遇到了一些在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的请求/响应跟踪示例。

1 个答案:

答案 0 :(得分:0)

以下是完整代码,用于准确返回所请求事件的记录数。

// The code sample below demonstrates how to get events using the Office 365 unified API (Preview).
$.ajax('https://graph.microsoft.com/beta/me/Events/?$top=1', {
        headers: { 
           Authorization: 'Bearer {token:https://graph.microsoft.com/}',
            Accept: 'application/json;odata.metadata=none',
    }
}).then(function (response) {
        for (var i = 0; i < response.value.length; i++) {
            console.log('Event "' + response.value[i].Subject + '"');
        }
        console.log('\n' + 'Full JSON response:')
        console.log(response);
    }).fail(function (error) {
        console.log(error);
    });

另外,如果你想测试一下:

1)转到下面的网址(o365 sandbox api) - &gt;代码示例 - &gt;获取活动 - &gt;并选择您的语言C#或JS:

https://apisandbox.msdn.microsoft.com/

2)使用您的o365信用卡登录。

3)通过为要请求的热门记录添加?top = 1来更改查询。

4)您将看到api完全返回所请求的记录数。

希望这有帮助。