Microsoft Graph API - 分页大型集合
Microsoft Graph API - paging large collections
我正在查看 Microsoft Graph API PHP SDK 以获得大量资源,尤其是用户。
查看 SDK 文档,有两种获取用户的方法,一种使用 createRequest()
方法,另一种使用 createCollectionRequest()
方法。
文档建议使用 createCollectionRequest()
然后只做一个 while 循环,array_merge
和 getPage()
来创建一个数组。
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();
我正在查看 Microsoft Graph API PHP SDK 以获得大量资源,尤其是用户。
查看 SDK 文档,有两种获取用户的方法,一种使用 createRequest()
方法,另一种使用 createCollectionRequest()
方法。
文档建议使用 createCollectionRequest()
然后只做一个 while 循环,array_merge
和 getPage()
来创建一个数组。
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();