2

我在 Office 365 REST API 中遇到了一些奇怪的分页问题。

使用以下请求批量获取用户的所有事件时(当然,每次调用时更新跳过参数):

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

有没有人也遇到过这些问题,如果有,你是如何解决这个问题的?

可以在此处找到更多说明问题的请求/响应跟踪示例。

4

1 回答 1

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) 转到以下 url (o365 sandbox api) -> 代码示例 -> 获取事件 -> 并选择您的语言 C# 或 JS:

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

2) 使用您的 o365 凭据登录。

3)通过添加 ?top=1 为您请求的最高记录来更改查询。

4) 你会看到 api 准确地返回了请求的记录数。

希望这可以帮助。

于 2015-09-24T14:33:29.880 回答