Odata Office 365 Sharepoint API$skip/$skiptoken功能

Odata Office 365 Sharepoint API$skip/$skiptoken功能,odata,office365,Odata,Office365,浏览Sharepoint API的文档(位于此处:),我试图找出如何选择文档块。我希望$skip可以工作,因为这意味着大多数OData功能都应该存在,但这不起作用。我也无法确定$skiptoken是否是有效的查询参数。它列在靠近底部的文档中(没有进一步的解释),但到目前为止,我无法从中得出正确的结果 如果有人知道$skip或$skiptoken或其他可用于获取分块响应的方法,那么解决此问题的帮助将非常有用 编辑:为了澄清,像API_URL/文件?$orderby=URL和$top=5这样的东西可

浏览Sharepoint API的文档(位于此处:),我试图找出如何选择文档块。我希望$skip可以工作,因为这意味着大多数OData功能都应该存在,但这不起作用。我也无法确定$skiptoken是否是有效的查询参数。它列在靠近底部的文档中(没有进一步的解释),但到目前为止,我无法从中得出正确的结果

如果有人知道$skip或$skiptoken或其他可用于获取分块响应的方法,那么解决此问题的帮助将非常有用


编辑:为了澄清,像API_URL/文件?$orderby=URL和$top=5这样的东西可以工作,但像API_URL/文件?$orderby=URL和$skip=50这样的东西不行。但是,我刚刚在响应中发现了一个“next”URL,它似乎提供了服务器端分页支持。我将尝试从这里了解$skiptoken的用法。

OData V4协议已指定(引用)以下内容:

OData服务在构建下一个链接时可以使用保留的系统查询选项$skiptoken。它的内容是不透明的,特定于服务的,并且只能遵循URL查询部分的规则。 OData客户端在构造请求时不得使用系统查询选项$skiptoken

因此,将$skiptoken发布为查询选项的O365 SharePoint API的实现违反了协议,客户端应使用该查询选项排除查询集合中的前几个项。对于这种情况,客户端应该使用$skip。但从您附加的O365规范来看,$skip似乎没有实现


如果查询O365服务的实体集,并且响应负载包含下一个链接(响应JSON对象中的
@odata.nextLink
注释),则表示该服务具有实体集的服务器端分页。通常,下一个链接是包含$skiptoken查询选项的URL,如
http://host/service/entityset?$skiptoken=n
客户端可用于获取下一页。

当前,
$skip
查询选项在SharePoint 2013/Online REST界面中不受支持。但您可以利用SharePoint2010REST界面,使用
$skip
查询选项检索分页结果,例如:

https://contoso.sharepoint.com/_vti_bin/ListData.svc/Pages?$skip=2&$top=2

如何在SharePoint 2013/在线REST界面中使用
$skiptoken
查询选项 格式:
$skiptoken=Paged=TRUE&p\u ID=&$top=

示例

该示例演示如何从
页面
库检索有限数量的项目(ID等于或大于
2
的2个项目):

function getPagedItems(webUrl,listTitle,startItemId,itemsCount)
{
    var endpointUrl = webUrl + "/_api/web/lists/getbytitle('" + listTitle +  "')/items?$skiptoken=" + encodeURIComponent('Paged=TRUE&p_SortBehavior=0&p_ID=' + (startItemId-1) + '&$top=' + itemsCount);
    return executeRequest(endpointUrl,'GET');
}


getPagedItems('https://contoso.sharepoint.com/','Pages',2,2)
.done(function(data){
    if(data.d.results.length == 0){
        console.log('Items not found');
        return;
    }
    for(var i = 0; i < data.d.results.length; i++){
        var item = data.d.results[i];
        console.log(item.Title);
    }   
});

谢谢不幸的是,除了$skip之外,似乎还没有$search和$filter的实现。目前,该服务只支持使用$skiptoken和nextlink进行前向分页。众所周知,$skip功能在服务中还不可用。开发团队意识到了这一点。@MichaelMainer Microsoft,这一功能从未延续到2013年。实现分页的推荐方法是什么?使用_vti_bin/ListData.svc?事实证明,$filter是实现的,这与我前面所说的不同,但它所使用的许多函数都不是,并且只能在某些列上使用。然而,我不得不做这么多深入的文档挖掘和实验来弄清楚这一点,而不是用一个单一的、清晰的文档来展示这一点,这太糟糕了available@JohnPalmer,我现在才了解O365的SharePoint API。我不确定2013年的API。
function executeRequest(url,method,headers,payload) 
{
    if (typeof headers == 'undefined'){
        headers = {};
    }
    headers["Accept"] = "application/json;odata=verbose";
    if(method == "POST") {
        headers["X-RequestDigest"] = $("#__REQUESTDIGEST").val();
    }   

    var ajaxOptions = 
    {       
       url: url,   
       type: method,  
       contentType: "application/json;odata=verbose",
       headers: headers
    };
    if(method == "POST") {
      ajaxOptions.data = JSON.stringify(payload);
    }  

    return $.ajax(ajaxOptions);
}