如何使用MS Graph PHP SDK v2通过已知路径列出DriveItem子项
使用MS Graph PHP SDK v2通过路径列出DriveItem子项
核心实现代码
直接通过SDK的链式方法对应REST端点的层级结构,就能实现你要的请求,示例代码如下:
use Microsoft\Graph\Graph; // 初始化已授权的Graph客户端(假设你已完成身份验证流程) $graph = new Graph(); $graph->setAccessToken('你的访问令牌'); // 定义参数 $driveId = '目标Drive的ID'; $relativePath = 'Documents/项目资料/2024Q1'; // 相对于Drive根目录的路径,无需开头斜杠 // 链式调用获取子项 try { $children = $graph->drives() ->byDriveId($driveId) ->root() ->itemWithPath($relativePath) ->children() ->get(); // 遍历处理子项 foreach ($children->getValue() as $item) { echo $item->getName() . ' - ' . $item->getSize() . PHP_EOL; } } catch (\Exception $e) { echo '请求失败:' . $e->getMessage(); }
关键思路解析
SDK的链式方法完全对应REST API的端点结构:
drives()对应/drives段byDriveId($driveId)补全/drives/{drive-id}中的ID参数root()对应/root节点itemWithPath($relativePath)就是REST端点里:/{path-relative-to-root}:的SDK实现,用于指定相对路径children()对应/children子资源- 最后调用
get()发起GET请求
注意事项
- 相对路径无需开头的斜杠,比如直接写
Folder/SubFolder而非/Folder/SubFolder - 如果路径包含特殊字符,SDK会自动处理URL编码,无需手动转义
- 若需要分页获取大量子项,可以在
get()前添加top(50)这样的分页参数,后续也可通过$children->getOdataNextLink()处理分页逻辑
内容的提问来源于stack exchange,提问作者Angel Motta
相关产品推荐
相关产品推荐

