提供“allowthrottleablequeries”首选项以允许此操作

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

我使用 Microsoft Graph API 开发了一个 API。我遇到以下问题。

我拨打的网址:

/v1.0/sites/root/lists/cb32cc85-5351-423d-b2ec-bb418c1d9c64/items?
$filter=fields/Created gt '2018-1-1T00:00:00'
&expand=fields
&$orderby=createdDateTime
&$top=10

API 返回错误:

“Created”字段无法在过滤器或 orderby 中引用,因为它未建立索引。提供“allowthrottleablequeries”首选项以允许执行此操作,但请注意,此类查询可能会在大型列表上失败。

如何启用

allowthrottleablequeries
,正如它所说,我应该如何实现这一点?

microsoft-graph-api onedrive sharepoint-api
3个回答
1
投票

恐怕这不是一个非常清晰或有用的错误消息。据我所知,实际上没有办法启用

allowthrottleablequeries

当 SharePoint 列表变得太大而无法处理非索引列的筛选或排序时,就会发生这种情况。解决方法是在列表设置中的

created
列中添加索引。您可以在向 SharePoint 列添加索引中找到有关如何完成此操作的说明。


0
投票

尝试使用以下请求标头发送您的请求

首选:允许可调节查询

如果不起作用,请尝试以下请求标头

首选:HonorNonIndexedQueriesWarningMayFailRandomly


0
投票

在 Java SDK 中,您可以通过将标头添加到图形调用的 .get(GetRequestConfiguration) 部分来将标头添加到请求中。

这里是获取网站中所有 pdf 文件的示例,其中包含设置标题、过滤和扩展的示例。

    private final String siteIdProductDevelopment = "your site ID";
    private final String sharedDocumentsListId = "you list id";
    
    var result = graphServiceClient.sites()
        .bySiteId(siteIdProductDevelopment)
        .lists()
        .byListId(sharedDocumentsListId)
        .items()    
            .get(request ->
  request.headers.add("Prefer",HonorNonIndexedQueriesWarningMayFailRandomly");
    request.queryParameters.expand = new String []{"fields"};
    request.queryParameters.filter = "fields/ContentType eq 'Document' and fields/DocIcon eq 'pdf'";
                    })
            .getValue();
© www.soinside.com 2019 - 2024. All rights reserved.