OData计数用于分页,过滤和搜索

时间:2014-04-25 09:19:18

标签: json pagination odata

$top$skip一起,有@odata.count注释(另请参阅http://docs.oasis-open.org/odata/odata-json-format/v4.0/os/odata-json-format-v4.0-os.html#_Toc372793054)。

我不确定这与所提到的查询选项的行为如何。将计数返回计数"在"后面,即原始集合的计数,没有应用top和skip?

此外,$filter$search的问题是什么?

对于前端分页,最好是查看集合的计数,如果存在过滤器或搜索,则过滤集合的计数。像

这样的东西
Showing 10 of 27 records (filtered from 530 records)

10将是$top的结果(即响应json的实际有效载荷value),27将是过滤/搜索结果量,530将是原始收集计数。

除了$ count之外还有什么可以实现的,或实际上是$ count的是什么?

1 个答案:

答案 0 :(得分:0)

这些查询选项的含义在http://docs.oasis-open.org/odata/odata/v4.0/os/part1-protocol/odata-v4.0-os-part1-protocol.html中定义。

您可以在http://services.odata.org/v4/OData/OData.svc上使用它们进行规划,例如: http://services.odata.org/v4/OData/OData.svc/Products?$count=true&$top=2&$orderby=ID%20desc&$filter=ID%20lt%208导致:

{
    "@odata.context": "http://services.odata.org/V4/OData/OData.svc/$metadata#Products",
    "@odata.count": 8,
    "value": [
        {
            "ID": 7,
            "Name": "DVD Player",
            "Description": "1080P Upconversion DVD Player",
            "ReleaseDate": "2006-11-15T00:00:00Z",
            "DiscontinuedDate": null,
            "Rating": 5,
            "Price": 35.88
        },
        {
            "ID": 6,
            "Name": "Pink Lemonade",
            "Description": "36 Ounce Cans (Pack of 3)",
            "ReleaseDate": "2006-11-05T00:00:00Z",
            "DiscontinuedDate": null,
            "Rating": 3,
            "Price": 18.8
        }
    ]
}

但似乎$ skip不起作用。