使用OData URL传递多个参数

3
我希望使用OData协议在我的Get请求中传递多个参数。以下是我正在进行的操作。
我正在使用Fiddler进行GET请求,如下所示。
https://127.0.0.1/odata/controllerName('param1','param2')

在我的控制器类中,我有两个控制器方法。第一个控制器方法只接受一个参数,而第二个控制器方法接受两个参数。只有一个参数的控制器方法运行良好。当我请求带有两个参数的控制器方法时,它调用了只有一个参数的控制器方法。我无法理解为什么它不能识别具有两个参数的控制器方法。或者OData不支持多个参数。
控制器方法1
public int controllerName([FromOdataUri] string key);

控制器方法 2

public int controllerName([FromODataUri] string param1, [FromODataUri] string param2);
2个回答

3
根据OData协议,如果实体的键由2个属性组成,则可以按照以下方式查询它:
    ~/odata/EntitySet(key1='key1',key2='key2')

但是如果您没有这样的密钥,那么您可能需要使用函数,这些函数通过GET调用,并且参数在URL中传递,例如:
    ~/odata/Products(33)/Default.CalculateGeneralSalesTax(state='WA') 
    ~/odata/GetSalesTaxRate(state='CA')

请参考此示例:https://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/ODataFunctionSample/。您可以添加任意数量的参数。

由于链接示例...似乎需要实现复合键处理程序,如果你想这样称呼它... - Hassan Faghihi

2
OData只需要一个参数,但可以作为请求体传递JSON字典。请参考“调用操作”下的示例,并搜索ODataActionParameters了解.NET的WebAPI如何实现OData参数字典要求。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接