【问题标题】:Microsoft Graph cannot select on expand statement for /groupsMicrosoft Graph 无法选择 /groups 的展开语句
【发布时间】:2019-02-08 02:59:36
【问题描述】:

我想通过 Microsoft Graph 访问所有组的所有成员。我想在一次调用中收集这些信息,而不是遍历每个组。

我只想为展开的成员选择一个信息子集。

我找不到这样做的方法,但我相信它是受支持的。在展开时选择合适的方法是什么?

据我所知,这应该可以满足我的需求,但是,返回的结果没有 members 属性:

https://graph.microsoft.com/v1.0/groups?$expand=members($select=id,userPrincipalName)

然而,这确实返回了所有成员,但提供了比我正在寻找的更多方式信息:

 https://graph.microsoft.com/v1.0/groups?$expand=members

我在两个地方试过这个:

  1. Microsoft Graph API explorer(以上具体示例)。

  2. 在真实环境中的我的代码中。此处的代码我将省略,因为代码的结果与 Graph Explorer 相同。

编辑:虽然我已经接受了 Marc 的回答,因为它有助于解决这个问题,但对于其他人,我要注意以下内容仍会在单个(尽管很大)响应中返回组和成员:

 https://graph.microsoft.com/v1.0/groups?$expand=members

【问题讨论】:

    标签: microsoft-graph-api


    【解决方案1】:

    虽然从 OData 角度来看您的查询格式正确,但 Groups 并未实现此模式。您需要分别查询每个组的成员资格。

    可以做的是减少使用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"
        } 
      ]
    }
    

    【讨论】:

    • 嗨,Marc,当您提到“组不实现此模式”时,您是在谈论展开时的“选择”模式,还是整体上的“展开”模式?我最初的想法是您在谈论展开时的选择
    • 我指的是扩展 + 选择模式 ($expand($select=x,y,z,))。您可以扩展members,但有一些痛苦的限制。例如,我相信它只会返回 20 个成员。正如您所注意到的,它还返回一个 huge 数据集,far 比您可能需要的要多。
    • 昨天出现了一个类似的问题,所以您可能会发现这个答案也很有帮助:stackoverflow.com/a/55246779/105518
    • 不知道为什么微软不只是让会员资格的第一页可用,如果存在则将您链接到下一页。现在的方式很糟糕,因为获取所有 azure 组成员资格 - 你有 O(N) 而不是 O(n/batchsize)。对于大型实例来说,这是一个巨大的减速。
    猜你喜欢
    • 2020-07-03
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多