我想通过Microsoft Graph访问所有组的所有成员。我想将其收集在一个电话中,而不是遍历每个组。
我只想为扩展成员选择一部分信息。
我找不到执行此操作的方法,但我相信它受到支持。在展开时进行选择的合适方法是什么?
据我所知,这应该可以满足我的需求,但是返回的结果没有members
属性:
https://graph.microsoft.com/v1.0/groups?$expand=members($select=id,userPrincipalName)
但是,这确实返回了所有成员,但是提供了 way 比我正在寻找的更多信息:
https://graph.microsoft.com/v1.0/groups?$expand=members
我已经在两个地方尝试过
Microsoft Graph API explorer(上面的特定示例)。
在真实环境中的代码中。我将在这里省略代码,因为代码的结果与Graph Explorer相同。
编辑:虽然我接受了马克的回答,因为它可以帮助解决此问题,但对于其他人,我要指出的是,以下内容仍会在单个(尽管很大)的响应中返回组和成员:
https://graph.microsoft.com/v1.0/groups?$expand=members
答案 0 :(得分:2)
虽然从OData角度来看,查询的格式正确,但网上论坛并未实现此模式。您需要分别查询每个组的成员资格。
您可以 做的是减少使用JSON Batching的通话次数。您一次最多可以批量处理20个呼叫。最简单的方法是将页面大小设置为20条记录,如下所示:
https://graph.microsoft.com/v1.0/groups?$select=id&$top=20
然后,对于每个页面,发送对该页面上的组的批处理请求:
POST https://graph.microsoft.com/v1.0/$batch
{
"requests": [
{
"id": "1",
"method": "GET",
"url": "/groups/{group-id}/members"
},
{
"id": "2",
"method": "GET",
"url": "/groups/{group-id}/members"
},
//...
{
"id": "20",
"method": "GET",
"url": "/groups/{group-id}/members"
}
]
}