原谅我,我对使用REST非常新。
目前我正在使用SP2013 Odata (_api/web/lists/getbytitle('<list_name>')/items?)
获取列表的内容。该列表中有199个项目,所以我需要调用它两次,每次都要求一组不同的项目。我想我可以通过调用来做到这一点:
_api/web/lists/getbytitle('<list_name>')/items?$skip=100&$top=100
每次改变,但我需要跳过很多。问题是这只会返回前100个项目。有什么我做错了或是 $skip
在OData服务中打破了吗?
有没有更好的方法来迭代REST调用,假设这种方式不起作用或不实用?
我正在使用JSon协议 Accept
标题等于 application/json;odata=verbose
我想是的 $top=100
没有必要
编辑:我已经查了更多,我不完全确定这里的条款,但使用 $skip
如果您使用SharePoint 2010引入的方法,则可以正常工作,即 _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个项目,则会有一个 __next
在 d/__next
(假设你使用的是json)。这个 __next
(这是一个双重的不足,记住这一点。我起初有一些问题,因为我试图得到 d/_next
它从未返回任何内容)是获取下一组项目的正确URL。 __next
如果有另一组可用的项目,它将只是一个值。
我最终创造了一个 RequestURL
最初设置为原始请求的变量,但更改为 d/__next
在循环结束时。然后循环去检查是否 RequestURL
在进入循环之前不是空的。
原谅我缺少代码,我正在使用SharePoint Designer 2013来实现这一点,并且语法不是非常具有描述性。
如果你只喜欢一小组数据
可能有一些你只想要的情况 x
每次进行循环时列表中的行数量也很容易实现。
如果你只是添加一个 $top=x
你的请求的参数, __next
随响应返回的URL将为您提供下一个 x
列表中的行。最终没有剩下的行返回 __next
不会随着回复而退回。
好吧,我已经弄清楚了。 $skip
不是一个意图用于的命令 items?
水平。它只适用于 lists?
水平。但是,有一种方法可以做到这一点,实际上比我想做的容易得多。
如果您只想要所有数据
在返回的数据中,假设您正在调用的列表包含超过100个项目,则会有一个 __next
在 d/__next
(假设你使用的是json)。这个 __next
(这是一个双重的不足,记住这一点。我起初有一些问题,因为我试图得到 d/_next
它从未返回任何内容)是获取下一组项目的正确URL。 __next
如果有另一组可用的项目,它将只是一个值。
我最终创造了一个 RequestURL
最初设置为原始请求的变量,但更改为 d/__next
在循环结束时。然后循环去检查是否 RequestURL
在进入循环之前不是空的。
原谅我缺少代码,我正在使用SharePoint Designer 2013来实现这一点,并且语法不是非常具有描述性。
如果你只喜欢一小组数据
可能有一些你只想要的情况 x
每次进行循环时列表中的行数量也很容易实现。
如果你只是添加一个 $top=x
你的请求的参数, __next
随响应返回的URL将为您提供下一个 x
列表中的行。最终没有剩下的行返回 __next
不会随着回复而退回。