如何克服 Microsoft Graph 中返回记录的限制?

Oma*_*cia 2 azure-active-directory microsoft-graph-api

我使用邮递员发送了以下请求:

https://graph.microsoft.com/v1.0/auditLogs/signIns
Run Code Online (Sandbox Code Playgroud)

响应是 1000 条记录。有没有办法克服记录的限制?我试过:

https://graph.microsoft.com/v1.0/auditLogs/signIns?$top=5000
Run Code Online (Sandbox Code Playgroud)

我检索到相同的结果。只有 1000 条记录。有没有办法克服这个限制?提前致谢。

Mar*_*eur 5

所述$top查询参数不旨在是数据分页的替代方案。它的目的是控制每页的大小,它有999每页记录的上限。从文档

$top 接受最小值 1 和最大值 999(含)。

大多数端点的默认页面大小是100记录。对于大多数用例,此默认值应保留为默认值。也有例外,但大多数时候是减少页面大小(即针对低内存或移动设备进行优化)。

您应该遍历 Graph 返回的分页数据,而不是设置大量的页面大小。在你的应用分页 Microsoft Graph 数据中概述了此过程。例如,使用 C#,您可能会按照以下方式执行某些操作:

// Create a bucket to hold the final results
var userList = new List<User>(); 

// Request the first page of data
var usersPage = await graphServiceClient
    .Users
    .GetAsync();

// Add the first page of data to the final list
userList.AddRange(usersPage.CurrentPage);

// Repeate until all pages have been returned
while (usersPage.NextPageRequest != null)
{
    usersPage = await usersPage.NextPageRequest.GetAsync();
    userList.AddRange(usersPage.CurrentPage);
}
Run Code Online (Sandbox Code Playgroud)

  • 这正是它的工作原理,您跟随每个 nextLink 直到到达最终页面(不会有 nextLink)。 (2认同)