Graph API OData filter属性在SP库中失效,是否操作有误?
问题现象
- 调用
https://graph.microsoft.com/v1.0/sites/{siteId}/drives/{driveId}/items接口时必须携带$filter参数(不携带会返回400 BadRequest),但该参数完全无法起到筛选作用 - 示例请求:
https://graph.microsoft.com/v1.0/sites/{siteId}/drives/{driveId}/items?$filter=name eq 'images.json',预期仅返回images.json文件,实际返回文档库内全部文件 - 问题自2024年12月17日起出现,至今未恢复;多租户测试均复现,Azure Function生产代码(2024年7月上线未修改)和Graph Explorer均受影响
排查与结论
- 端点误用可能性:
/drives/{driveId}/items端点主要用于DriveItem集合的通用查询,部分场景下OData筛选支持存在限制。针对文档库根目录文件的筛选,官方推荐使用/drives/{driveId}/root/children端点,该端点对$filter的支持更稳定。 - 服务端异常确认:由于多环境、多客户端均复现,且此前正常运行的代码无修改突然失效,基本可以排除本地操作问题,大概率是Graph API服务端的更新导致
/items端点的$filter逻辑出现故障。目前Graph API已知问题中未收录该情况,建议通过微软365管理中心提交支持工单,提供租户ID、请求ID和详细复现步骤协助排查。
临时修复方案
切换到/root/children端点执行筛选,示例请求:
https://graph.microsoft.com/v1.0/sites/{siteId}/drives/{driveId}/root/children?$filter=name eq 'images.json'
该端点可正常应用筛选条件,返回符合要求的文件。
内容的提问来源于stack exchange,提问作者Vojta Vokoun
相关产品推荐
相关产品推荐

