如何使用 JavaScript 的 Microsoft Graph 客户端 select 扩展字段中的字段
How to select fields in the expanded field with Microsoft Graph Client for JavaScript
根据 JavaScript documentation 的 Microsoft Graph 客户端,客户端支持 $expand
查询参数并且工作正常。
由于 Microsoft Graph API 支持在使用 ($expand=attachments($select=name,size)
) 时在扩展字段内进行选择,我该如何使用 JavaScript SDK/Client?
我试过类似的方法,但它 returns 扩展管理器的大量属性(我试图避免的事情):
client
.api('/users')
.expand('manager($select=displayName)')
.get();
您的语法是正确的,但 API 本身恐怕不支持。虽然 AAD 资源支持 $expand
,但存在一些严重的限制:
仅Beta版支持。至于为什么限定Beta,我猜是因为下一点。
您不能在同一查询中同时使用 $expand
和 $select
。换句话说,不仅 /me?$expand=manager($select=displayName)
会失败,/me?$select=id,displayName&$expand=manager($select=displayName)
或 /me?$select=id,displayName&$expand=manager
也会失败。
鉴于数据的价值最终返回并被限制为 Beta 版本,$expand
在涉及 DirectoryObject 时实际上被降级为少数边缘情况。
我的建议是避免扩展管理器,而是将页面大小设置为 20,并为每个数据页构建一个 batch request 来拉动管理器。这使您可以显着减少线路上的数据量,将出站调用的数量保持在每页仅两个,并且可以完全在 v1.0 版本中完成。
有关如何构造批量请求的详细信息,请参阅 SDK 文档中的 Batching。
根据 JavaScript documentation 的 Microsoft Graph 客户端,客户端支持 $expand
查询参数并且工作正常。
由于 Microsoft Graph API 支持在使用 ($expand=attachments($select=name,size)
) 时在扩展字段内进行选择,我该如何使用 JavaScript SDK/Client?
我试过类似的方法,但它 returns 扩展管理器的大量属性(我试图避免的事情):
client
.api('/users')
.expand('manager($select=displayName)')
.get();
您的语法是正确的,但 API 本身恐怕不支持。虽然 AAD 资源支持 $expand
,但存在一些严重的限制:
仅Beta版支持。至于为什么限定Beta,我猜是因为下一点。
您不能在同一查询中同时使用
$expand
和$select
。换句话说,不仅/me?$expand=manager($select=displayName)
会失败,/me?$select=id,displayName&$expand=manager($select=displayName)
或/me?$select=id,displayName&$expand=manager
也会失败。
鉴于数据的价值最终返回并被限制为 Beta 版本,$expand
在涉及 DirectoryObject 时实际上被降级为少数边缘情况。
我的建议是避免扩展管理器,而是将页面大小设置为 20,并为每个数据页构建一个 batch request 来拉动管理器。这使您可以显着减少线路上的数据量,将出站调用的数量保持在每页仅两个,并且可以完全在 v1.0 版本中完成。
有关如何构造批量请求的详细信息,请参阅 SDK 文档中的 Batching。