使用skip和top进行OData分页 - 如何知道没有更多数据?

时间:2016-11-16 10:00:39

标签: odata

我有OData源,它实现$tophttps://example.com/EntitySet?$top=30&$skip=220 参数。 有多个实体返回。说,我只有250个实体。然后我尝试像这样进行分页:

eval(get_file_contents())

如果我的跳过超出了总实体的数量,我最终会因服务而暂停。

是否有参数或数据,这会告诉我没有更多的项目?是否可以/应该在OData端实现某些内容,而是返回而不是超时?

2 个答案:

答案 0 :(得分:3)

对于OData 2.0和OData 3.0协议: 您应该使用:$inlinecount=allpages

  

http://services.odata.org/OData/OData.svc/Products$inlinecount=allpages&$top=5&$format=json

     

标识前5个产品条目和   包括产品条目总数的计数。

对于OData 4.0,您可以阅读响应中嵌入的 nextLink 注释。 (参见示例here

  

4.5.5注释odata.nextLink odata.nextLink注释表明响应只是所请求集合的一个子集   实体或实体参考集合。它包含一个URL   允许检索所请求集合的下一个子集。

答案 1 :(得分:0)

如果您向您的uri添加&$count=true,该服务将在响应中包含总计数。 json响应将包含"@odata.count"属性。此属性表示实体总数。

这样你就可以检查你是否收到了所有实体。