如何只获取没有价值的 Odata.Count

Posted

技术标签:

【中文标题】如何只获取没有价值的 Odata.Count【英文标题】:How to get only Odata.Count without value 【发布时间】:2015-07-19 07:49:47 【问题描述】:

有什么方法可以在没有任何值数组的情况下仅获取响应有效负载中的数据计数?

我正在使用带有 Webapi 2.2 的 ODataV4.0。 目前,当我查询以下内容时,它会返回所有值和计数: http://odata/People?$count=true

我只需要"@odata.count":1, "value":[] 或没有"value" 之类的东西。

这是获得这份工作的唯一途径吗?

【问题讨论】:

【参考方案1】:

$top 设置为零,将$count 设置为true

例如: http://services.odata.org/V4/Northwind/Northwind.svc/Customers?$count=true&$top=0

返回计数但没有结果


    "@odata.context": "http://services.odata.org/V4/Northwind/Northwind.svc/$metadata#Customers",
    "@odata.count": 91,
    "value": []

计数是在应用$filter 之后计算的,但没有考虑$top$skip

例如:http://services.odata.org/V4/Northwind/Northwind.svc/Customers?$count=true&$top=0&$filter=Country%20eq%20%27Germany%27

通知您有 11 个国家/地区为“德国”的结果,但没有在响应中返回任何记录。

【讨论】:

嗨,我刚试过这个,如果我将 $top=0 添加到查询参数中,我不会得到@odata.count。不确定他们是否改变了一些东西。还有其他方法可以只获取 OData 属性吗? 我看到这个答案正确地描述了示例端点上实际发生的情况,但是,根据文档,我不明白为什么会这样。我在a related question 中询问过这个问题。 @FH 这是因为北风示例服务是一个 .net(wcf 数据服务)实现,所以您需要参考 .net 文档:docs.microsoft.com/en-us/odata/concepts/… 但是啊,它不完全符合那个,要么是因为服务很旧,不再维护。【参考方案2】:

您还可以附加 $count 作为路径元素来获取原始计数,例如,

https://services.odata.org/V4/Northwind/Northwind.svc/Customers/$count

这也适用于应用的过滤器等: https://services.odata.org/V4/Northwind/Northwind.svc/Customers/$count?$filter=Country%20eq%20%27Germany%27

德国客户数量。

【讨论】:

后一种使用 $count 是否可以在文档的任何地方找到?如果将诸如 $filter 之类的参数附加到 $count 路由被认为符合标准,这可以节省我 a lot of hassle。 @F-H : docs.oasis-open.org/odata/odata/v4.01/…

以上是关于如何只获取没有价值的 Odata.Count的主要内容,如果未能解决你的问题,请参考以下文章

我们可以使用OData客户端为syncfusion网格创建我们的请求但是使用正常响应(Reqular WebAPI)

如何从订阅内部函数中获取价值?离子 3

如何从 Xamarin 中的 Firebase 获取价值?

如何使用 Xamarin iOS PickView 获取价值?

如何在 JSON 中获取价值?

如何从 Tkinter 滑块(“Scale”)中获取价值?