簡體   English   中英

使用$ skip與SharePoint 2013 REST API

[英]Using $skip with the SharePoint 2013 REST API

原諒我,我對使用REST非常新。

目前我正在使用SP2013 Odata (_api/web/lists/getbytitle('<list_name>')/items?)來獲取列表的內容。 該列表中有199個項目,所以我需要調用它兩次,每次都要求一組不同的項目。 我想我可以通過調用:

_api/web/lists/getbytitle('<list_name>')/items?$skip=100&$top=100

每次改變,但我需要跳過很多。 問題是這只返回前100個項目。 有什么我做錯了或者在OData服務中$skip了嗎?

有沒有更好的方法來迭代REST調用,假設這種方式不起作用或不實用?

我正在使用JSon協議和Accept Header equaling application/json;odata=verbose

我認為$top=100並不是必需的

編輯:我已經查了更多,我不完全確定這里的條款,但如果你使用SharePoint 2010引入的方法,使用$skip工作正常,即_vti_bin/ListData.svc/<list_name>?$skip=100

實際上,有趣的是,舊的方式沒有設置100項回報限制。 所以跳過甚至沒有必要。 但是,如果您只想返回某一段數據,則必須執行以下操作:

_vti_bin/ListData.svc/<list_name>?$skip=x&$top=(x+y)

每次通過循環,你會有像x+=y東西

您可以使用我上面描述的舊方法,或者查看下面的答案,了解如何使用SP2013 OData執行此操作

好吧,我已經明白了。 $skip不是一個用於items? 水平。 它只適用於lists? 水平。 但是,有一種方法可以做到這一點,實際上比我想做的容易得多。

如果您只想要所有數據

在返回的數據中,假設您正在調用的列表包含超過100個項目,則下一個d/__next將有一個__next (假設您使用的是json)。 這個__next (這是一個雙重的問題,記住這一點。我起初遇到一些問題,因為我試圖得到d/_next ,它從未返回任何內容)是獲取下一組項目的正確URL。 如果有另一組可用項,則__next將只是一個值。

我最終創建了一個RequestURL變量,該變量最初設置為原始請求,但在循環結束時更改為d/__next 然后循環去檢查RequestURL在進入循環之前是否為空。

原諒我缺少代碼,我正在使用SharePoint Designer 2013來實現這一點,而且語法並不是非常具有描述性。

如果你只喜歡一小組數據

在某些情況下,每次進行循環時,您只需要列表中的x行數,這也很容易實現。

如果您只是在請求中添加$top=x參數,那么帶有響應的__next URL將為您提供列表中的下一行x行。 最后,當沒有剩下的行返回__next時,不會返回響應。

不要忘記,為了使用__next你需要有一個

$skiptoken=Paged=TRUE 

在網址中也是如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM