Graph API OData 属性“过滤器”与 SP 库不能很好地配合 – 我做错了什么吗?

问题描述 投票:0回答:1

在过滤 SP 库内的文件时,我遇到了有关 OData 属性

filter
的 Graph API 问题。

由于某种原因,该属性根本不过滤,尽管它是必需的(不带

filter
属性调用会导致
400 BadRequest
)。我第一次遇到这个问题是在 2024 年 12 月 17 日,它仍然存在。

我成功重现该问题的步骤:

  • 在 SP 站点中创建新文档库。
  • 创建一些文档,最好具有相同的扩展名。 (在我们的例子中,文档名称为
    design.json
    images.json
    remoteEndpoints.json
    questions.json
    。)
  • 创建 Graph API 查询并发送:
    https://graph.microsoft.com/v1.0/sites/{siteId}/drives/{driveId}/items?$filter=name eq 'images.json'
  • 预期行为:仅返回
    images.json
  • 实际行为:返回所有 4 个文件。

库中文件较多时,该问题似乎仍然存在。我已经在多个租户上测试了这个问题,结果相同。该问题似乎并不归因于特定客户端,因为它出现在我们的 PROD 代码(作为 Azure 函数托管)和 Graph Explorer 中。出现此问题的 PROD 代码自 2024 年 7 月以来一直在运行,没有任何更改,也没有任何问题。

我尝试调查 Graph API 的已知问题,其中有一个关于所有 OData 查询的已知问题线程,不幸的是,我找不到任何提及此问题的信息。

是我做错了什么,还是服务本身有问题?

谢谢大家的建议!

azure sharepoint microsoft-graph-api graph-explorer
1个回答
0
投票

过滤

driveItems
从来没有不能正常工作。我建议使用
/v1.0/search/query
端点来搜索文件

POST https://graph.microsoft.com/v1.0/search/query

{
    "requests": [
        {
            "entityTypes": [
                "driveItem"
            ],
            "query": {
                "queryString": "filename:images.json AND path:\"https://contoso.sharepoint.com/sites/<site_name>\""
            }
        }
    ]
}

使用

path
中的
queryString
,您可以减少对特定站点(文档库甚至特定文件夹)的搜索

© www.soinside.com 2019 - 2024. All rights reserved.