我们正在尝试查询Sharepoint API。我们使用下面的查询来获得前5000名,并且它可以工作。
https://abc.123.org/sites/js/project/_api/web/lists/GetByTitle('S%20Codes')/items?$top=5000
但是如果我们尝试获得超过5000条记录,就会中断。我们还尝试使用query参数中的skip获取下5000条记录,但该记录不起作用
https://abc.123.org/sites/js/project/_api/web/lists/GetByTitle('S%20Codes')/ items?$ skip = 5000&$ top = 5000
如何跳过第一组记录并获取下一组记录。
答案 0 :(得分:0)
呼叫端点:
https://abc.123.org/sites/js/project/_api/web/lists/GetByTitle('S%20Codes')/items?$top=5000
搜索link rel="next"
,在此标记中,您将找到属性href
,类似于:items?%24skiptoken=Paged%3dTRUE%26p_ID%3d2&%24top=5000
。在此URL中,仅ID
参数会根据结果的最后一个项目ID的ID
进行更改。
该URL给您接下来的5000个项目。
答案 1 :(得分:0)
$ skip参数在SharePoint 2013中不适用于列表项。 参考-https://sharepoint.stackexchange.com/questions/126565/issue-with-skip-in-rest-api
但是,我发现的最简单的方法是使用SharePoint PnP.js 请参阅-https://github.com/SharePoint/PnP-JS-Core
您只需要添加对jQuery和PnP.js库文件的引用即可开始使用它。
请参考以下代码。它将跳过前1000条记录,并获取下1000条记录集:
<script type="text/javascript" src="/sites/mySiteName/SiteAssets/Javascripts/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="/sites/mySiteName/SiteAssets/Javascripts/pnp.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$pnp.sp.web.lists.getByTitle("S%20Codes").items.skip(1000).top(1000).get().then(successHandler, FailureHandler);
function successHandler(response){
if(response.length > 0){
console.log(response.length);
}
}
function FailureHandler(err){
// failure handler code
}
});
</script>