You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:SharePoint调用MS Graph API获取Drive全部项需强制Filter

解决MS Graph API获取Drive全部文件文件夹的问题

你遇到的问题是因为调用的/drives/{drive-id}/items端点针对部分Drive类型(比如SharePoint站点的文档库)强制要求传入$filter参数,但其实要获取全部文件和文件夹,应该用根目录子项端点,而非直接调用Drive的items集合。

正确的API调用方式

直接调用根目录的children接口,无需任何过滤参数就能返回根目录下所有文件和文件夹:

GET https://graph.microsoft.com/v1.0/drives/{drive-id}/root/children

如果需要递归获取所有层级的子项,可以结合$expand参数(注意单次请求有数量限制,大量文件需分页处理):

GET https://graph.microsoft.com/v1.0/drives/{drive-id}/root/children?$expand=children

Graph Java SDK 代码示例

用Java SDK的话,对应的调用代码如下:

// 假设已完成GraphServiceClient的身份验证初始化
DriveItemCollectionPage items = graphClient.drives("{drive-id}")
    .root()
    .children()
    .buildRequest()
    .get();

// 遍历返回的文件/文件夹项
for (DriveItem item : items) {
    System.out.println(item.name + " - 类型:" + (item.folder != null ? "文件夹" : "文件"));
}

为什么原端点需要filter?

/drives/{drive-id}/items是查询Drive全局所有项的接口,但对于SharePoint关联的Drive,微软出于性能和数据量控制的考虑,强制要求通过$filter缩小查询范围。而/root/children是专门获取根目录直接子项的接口,没有这个限制,完全匹配你获取全部内容的需求。

内容的提问来源于stack exchange,提问作者Vishal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 13:11:00