从用户和扩展管理器中选择特定字段

时间:2018-01-19 09:50:34

标签: microsoft-graph

我希望获得所有用户的经理关系,这可以通过https://graph.microsoft.com/beta/users?expand=manager轻松完成。

但我得到所有用户的所有数据和每个经理的所有数据,这太过分了!我想限制我的结果集只返回用户的id和displayName,而且只返回管理员关系的id。

https://graph.microsoft.com/beta/users?select=id,displayName&expand=manager(select=id)

这不起作用,我收到此错误:

  

Term'经理($ select = id)'在$ select或$ expand表达式中无效。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

不幸的是,我一直在寻找这个问题,以及 - 看来,这是不支持的:

https://developer.microsoft.com/en-us/graph/docs/concepts/query_parameters#expand-parameter

  

并非所有资源或关系都支持在扩展项上使用$ select。

我认为这意味着您不能在manager扩展上使用select。

我什至更进一步地说,您不能在用户查询本身上使用select,因为即使有其所有属性,也无法将扩展的“ manager”包括在select中。设置选择语句后,扩展的经理属性将消失。

目前有两种选择:

  1. 获取没有管理员的用户,然后一次创建20个批处理请求以获取用户管理员(仅ID)
  2. 放弃尝试提高效率,仅让所有用户和他们的经理一起使用所有资产。这会使您的请求requests肿,但是您将获得更少的请求。

我认为,根据计划获取的数据量(用户数量,所需属性),您应该选择最适合自己的方法。

答案 1 :(得分:0)

这是图形 API 文档,展示了如何扩展整个管理链并返回选定的字段。需要注意的是,它可以在文档页面上运行,但不会在 https://developer.microsoft.com/en-us/graph/graph-explorer 处返回预期的结果。

https://graph.microsoft.com/v1.0/me?$expand=manager($levels=max;$select=id,displayName)&$select=id,displayName&$count=true

链接到图形 API 用户列表管理器:

https://docs.microsoft.com/en-us/graph/api/user-list-manager?view=graph-rest-1.0&tabs=http#code-try-8