Microsoft Graph API组增量查询从不返回增量查询(带有nextLink的Infiinite循环)

时间:2019-03-27 14:37:10

标签: microsoft-graph

在使用Microsoft Graph Explorer时,我注意到当您提交诸如https://graph.microsoft.com/beta/groups/delta之类的组增量请求时,您将获得一个@ odata.nextLink响应。但是,当我遵循提供的链接时,如果我继续关注这些链接,则会开始获得与上一个响应完全相同的一组组,并带有另一个@ odata.nextLink,从而导致无限递归。预期的行为是在某个时候获取@ odata.deltaLink,但永远不会到达收到的响应中。我的Azure环境中有63个组。

尝试从查询中排除成员,但发送https://graph.microsoft.com/v1.0/groups/delta?$ select = displayName。在这种情况下,我在跟随@ odada.nextLink一次之后,在第二页上获得了@ odata.deltaLink。

2 个答案:

答案 0 :(得分:1)

好的,我想出了解决问题的方法。当Delta更改返回具有超过1000个成员的组时,则返回相同的数据集,但添加其余成员。看来这是一个无限循环,但实际上正在带来其余成员。然后,如果使用不扩展成员的select进行查询,则可以避免无限循环。

https://docs.microsoft.com/en-us/graph/delta-query-groups#paging-through-members-in-a-large-group

答案 1 :(得分:0)

Stack是询问此类问题的正确场所。我们的github问题是引发内容问题,而不是问如何使用API​​本身。

有一个特定的文档,可以在我们的文档https://docs.microsoft.com/en-us/graph/delta-query-groups

中向您展示如何对groups api进行更改

致电时,您会得到第一个结果。

GET https://graph.microsoft.com/v1.0/groups/delta?$select=displayName,description&$expand=members

然后,您下次将调用@ odata.nextLink,而不是在下一次进行完全相同的调用,而在上面的请求响应中返回的@ odata.nextLink包含跳过令牌。

GET https://graph.microsoft.com/v1.0/groups/delta?$skiptoken=pqwSUjGYvb3jQpbwVAwEL7yuI3dU1LecfkkfLPtnIjvB7XnF_yllFsCrZJ

第三个调用,您将从第二个响应中调用@ odata.nextLink。这些请求之间的@ odata.nextLink应该不同。