如何在Microsoft Graph中枚举外部连接的externalItem对象?
如何列出Microsoft Graph外部连接中的externalItem对象
Microsoft Graph并没有提供直接列出外部连接所有externalItem的端点(你尝试的GET /external/connections/<id>/items/确实无效),但可以通过以下两种可靠方法实现需求:
方法1:使用搜索API检索所有外部项
通过/search/query端点,指定你的外部连接作为数据源,执行全量搜索来获取所有externalItem:
请求示例
POST https://graph.microsoft.com/v1.0/search/query Content-Type: application/json { "requests": [ { "entityTypes": ["externalItem"], "query": { "queryString": "*" }, "from": 0, "size": 25, "dataSource": { "externalConnectionId": "{你的外部连接ID}" } } ] }
注意事项
- 单次请求最多返回25条结果,需要通过
from参数分页遍历所有数据,直到返回的value数组为空。 - 所需权限:
ExternalItem.Read.All或ExternalItem.ReadWrite.All(根据你的操作场景选择)。
方法2:使用Delta查询追踪外部项(推荐用于同步场景)
如果你需要定期同步并删除过时项,Delta查询是更高效的方案:它首次调用会返回所有当前存在的externalItem,后续调用仅返回新增、修改或删除的项,避免全量检索的开销。
请求示例(首次调用)
GET https://graph.microsoft.com/v1.0/external/connections/{你的外部连接ID}/items/delta
后续增量查询
首次调用会返回一个@odata.deltaLink,后续直接请求该链接即可获取自上次查询以来的所有变更:
GET {返回的deltaLink URL}
注意事项
- Delta查询会自动标记已删除的项,你可以根据返回结果中的
@removed属性来处理过时项的删除。 - 所需权限:
ExternalItem.ReadWrite.All(因为需要处理删除操作)。
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

