[英]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.