如何在OData上扩展多个属性

时间:2014-06-01 06:50:05

标签: odata

考虑我有这个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.

3 个答案:

答案 0 :(得分:20)

根据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

答案 1 :(得分:10)

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

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

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

答案 2 :(得分:0)

对于我们的SAP顾问: 我们也可以在oData中使用多级。 您需要通过这种方式传递它:

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

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