使用$ skip与SharePoint 2013 REST API

Bil*_*ler 13 rest sharepoint json

原谅我,我对使用REST非常新.

目前我正在使用SP2013 Odata (_api/web/lists/getbytitle('<list_name>')/items?)来获取列表的内容.该列表中有199个项目,所以我需要调用它两次,每次都要求一组不同的项目.我想我可以通过调用来做到这一点:

_api/web/lists/getbytitle('<list_name>')/items?$skip=100&$top=100
Run Code Online (Sandbox Code Playgroud)

每次改变,但我需要跳过很多.问题是这只返回前100个项目.$skip在OData服务中有什么我做错了或坏了吗?

有没有更好的方法来迭代REST调用,假设这种方式不起作用或不实用?

我正在使用带有AcceptHeader等于的JSon协议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)
Run Code Online (Sandbox Code Playgroud)

每次通过循环,你会有类似的东西 x+=y

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

Bil*_*ler 13

好吧,我已经明白了.$skip不是一个意味着在该items?级别使用的命令.它只适用于该lists?级别.但是,有一种方法可以做到这一点,实际上比我想做的容易得多.

如果您只想要所有数据

在返回的数据中,假设您调用的列表包含超过100个项目,则会有一个__nextat d/__next(假设您使用的是json).这__next(这是一个双重的不足,记住这一点.我一开始有一些问题,因为我试图得到d/_next哪些从未返回任何东西)是获得下一组项目的正确URL.__next如果有另一组可用的物品,它将只是一个值.

我最终创建了一个RequestURL最初设置为原始请求的变量,但d/__next在循环结束时更改为.然后循环去检查是否RequestURL在进入循环之前是否为空.

原谅我缺少代码,我正在使用SharePoint Designer 2013来实现这一点,而且语法并不是非常具有描述性.

如果你只喜欢一小组数据

可能有一些情况下,x每次进行循环时,您只需要列表中的行数,这也很容易.

如果您只是$top=x在请求中添加一个参数,那么__next随响应返回的URL将为x您提供列表中的下一行.最终当没有剩下的行返回__next时,不会返回响应.