【问题标题】:ODATA $expand and $select queries in urlurl 中的 ODATA $expand 和 $select 查询
【发布时间】:2016-06-24 15:48:36
【问题描述】:

是的,我知道,总是有人问这个问题。但是我寻找问题的答案,我所看到的一切都是相同的解释,但它仍然对我不起作用。解释。

例如在 Northwind 服务上(我用它来训练,因为它很简单,在使用我的工作服务之前):https://services.odata.org/V2/Northwind/Northwind.svc/

如果我这样做了

有效。

但是如果我想这样做:https://services.odata.org/V2/Northwind/Northwind.svc/Categories?$expand=Products($select=ProductName)(因为 Products 中有 ProductName 属性)......它不起作用。我有错误:位置 9 的语法错误。 “位置 9”对应第一个括号。

但是,我在http://odata.org/documentation 和 StackOverflow 的论坛上看到的都说应该是这样的。我哪里错了?

【问题讨论】:

    标签: url odata


    【解决方案1】:

    这是支持的,你指的是一个旧的示例服务,它是 v2,你可以做这样的请求,它是基于协议 v4 的, http://services.odata.org/V4/(S(ax34fkajuohvk1aw5pjzykjk))/TripPinServiceRW/People?$expand=Trips($select=TripId,Name)

    效果很好。

    顺便说一句,这个示例服务是建立在一些处于维护模式的技术之上的,如果你开始构建一个新的服务,我们会推荐使用 RESTier,参考 odata.github.io/RESTier/ 或者使用 OData web Api库,参考odata.github.io/WebApi

    【讨论】:

    • 谢谢,但实际上,我的工作的odata服务可能是V2,这种类型的请求不起作用......这就是我在Northwind V2上训练的原因:/
    • IMO,您应该针对您的实际 API 进行训练,尤其是对于简单的不受影响的 GET 请求,您会从中得到更多,odata.org 只是一个示例实现,并没有完全实现规范支持的所有查询选项。 v4 尤其如此,但也可以轻松应用于以前的版本。
    【解决方案2】:

    我找到了。在 odata v2 中,我们需要展开我们要显示的实体,然后在括号中选择相对于基础实体的路径。

    例子:

    https://services.odata.org/V2/Northwind/Northwind.svc/Categories?$expand=Products&$select=Products/ProductName

    毕竟没那么奇怪……

    【讨论】:

      猜你喜欢
      • 2015-04-04
      • 1970-01-01
      • 2015-11-29
      • 2015-07-30
      • 2016-06-18
      • 1970-01-01
      • 2019-07-16
      • 2017-02-27
      • 2015-05-12
      相关资源
      最近更新 更多