我遇到了一些在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的请求/响应跟踪示例。
答案 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完全返回所请求的记录数。
希望这有帮助。