Microsoft Graph API - 分页大型集合

Microsoft Graph API - paging large collections

我正在查看 Microsoft Graph API PHP SDK 以获得大量资源,尤其是用户。

查看 SDK 文档,有两种获取用户的方法,一种使用 createRequest() 方法,另一种使用 createCollectionRequest() 方法。

文档建议使用 createCollectionRequest() 然后只做一个 while 循环,array_mergegetPage() 来创建一个数组。

while (!$docGrabber->isEnd()) {
  $docs = array_merge($docs,$docGrabber->getPage());
}  

问题是,我有大约 50,000 个用户的集合,所以这种方法不是特别有效。

我想最大的问题是,上面的例子(使用 while 循环)是为了避免使用 API returns.

@odata.nextLink

但是,如果我们真的想使用它,而不是返回单个数组中的每条记录怎么办?

谢谢

除了使用 getPage() 和该示例,您还可以使用如下内容访问下一个链接:

$url = "/users";

// Get the first page
$response = $graph->createCollectionRequest("GET", $url)
                   ->setPageSize(50)
                   ->execute();

if ($response->getNextLink())
{
    $url = $response->getNextLink();
    // TODO: remove https://graph.microsoft.com/v1.0 part of nextlink
} else {
// There are no more pages.
    return null;
}

// get the next page, page size is already set in the next link
$response = $graph->createCollectionRequest("GET", $url)
                  ->execute();