【问题标题】:How to expand multiple properties on OData如何在 OData 上扩展多个属性
【发布时间】:2020-08-31 22:08:40
【问题描述】:

考虑我有这个 OData 表达式:

http://services.odata.org/northwind/northwind.svc/Categories?
    $expand=Products/Category

它将正确扩展Products.Category

现在我也想扩展另一个属性。例如“Products.Supplier”。

我尝试复制 $expand 的用法:

http://services.odata.org/northwind/northwind.svc/Categories?
    $expand=Products/Category
    &$expand=Products/Supplier

但它未能返回此错误:

Query parameter '$expand' is specified, but it should be specified exactly once.

【问题讨论】:

    标签: odata


    【解决方案1】:

    根据 OData ABNF,展开语法应该是:

    expand = '$expand' EQ expandItem *( COMMA expandItem )

    相当于:

    $expand=expandItem1,expandItem2,expandItem3,...
    

    所以请尝试:

    http://services.odata.org/northwind/northwind.svc/Categories?$expand=Products/Category,Products/Supplier


    有关详细信息,请参阅:

    http://www.odata.org/documentation/odata-version-2-0/uri-conventions/#ExpandSystemQueryOption

    【讨论】:

      【解决方案2】:

      您也可以尝试使用以下语法来扩展多个级别:

      $expand=Products($expand=Category),...
      

      这适用于 WebAPI 中的 MS OData 实现。

      【讨论】:

      • 赞成,因为此页面是扩展多个 OData 级别的谷歌结果的顶部,即使这不是 OP 的问题,而且这个答案解决了我的相关问题。
      【解决方案3】:

      对于我们的 SAP 顾问: 我们也可以在 oData 中使用多层次。 你需要这样传递:

      <host>/API_BUSINESS_PARTNER/Identification?$expand=to_Parent,to_Parent/to_Role
      

      上面的示例使您能够获取另一个展开的展开。在这种情况下 to_parent -> to_Role。 “to_Role”仅在父级可用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-30
        • 1970-01-01
        • 2017-04-08
        • 2021-04-14
        • 2020-01-20
        • 2021-05-21
        • 1970-01-01
        • 2017-05-25
        相关资源
        最近更新 更多