使用OData URL传递多个参数

时间:2014-04-04 20:05:53

标签: asp.net-web-api odata

我想使用OData协议在我的Get Request中传递多个参数。以下是我正在做的事情。

我正在使用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 个答案:

答案 0 :(得分: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/

您可以根据需要添加任意数量的参数。

答案 1 :(得分:1)

OData接受一个参数,但它可以是作为请求主体传递的JSON字典。 See the example here标题下的#34;调用行动"谷歌围绕 ODataActionParameters 了解.NET的WebAPI如何实现OData参数字典要求。