如何在OData上扩展多个属性

如何在OData上扩展多个属性,odata,Odata,假设我有这个OData表达式: http://services.odata.org/northwind/northwind.svc/Categories? $expand=Products/Category 它将正确展开产品。类别 现在我想扩展另一个属性。例如“Products.Supplier” 我已尝试复制$expand用法: http://services.odata.org/northwind/northwind.svc/Categories? $expand=Prod

假设我有这个OData表达式:

http://services.odata.org/northwind/northwind.svc/Categories?
    $expand=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 ABNF,扩展语法应为:

expand=“$expand”EQ expandItem*(逗号expandItem)

这相当于:

$expand=expandItem1,expandItem2,expandItem3,...
因此,请尝试:


有关详细信息,请参阅:


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

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

这与WebAPI中的MS OData实现配合得很好。

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

<host>/API_BUSINESS_PARTNER/Identification?$expand=to_Parent,to_Parent/to_Role
/API\u业务\u合作伙伴/标识?$expand=to\u父级、to\u父级/to\u角色

上面的示例提供了获取另一个扩展的扩展的能力。在本例中,转到\u父对象->转到\u角色。“to_Role”仅在家长级别可用。

因为此页面是google扩展OData多个级别的结果的顶部,尽管这不是OP的问题,此答案解决了我的相关问题。