2014-04-04 97 views
3

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

我使用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); 

回答

3

每OData协议,如果2个属性的实体复合材料的关键,那么你可以用这种方式进行查询:

~/odata/EntitySet(key1='key1',key2='key2') 

但是,如果你没有这样的键,那么你可能需要的功能,这是所谓的用GET和参数在传递的网址,如

~/odata/Products(33)/Default.CalculateGeneralSalesTax(state='WA') 
    ~/odata/GetSalesTaxRate(state='CA') 

请参阅此示例:https://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/ODataFunctionSample/

您可以添加尽可能多的参数如你所愿。

+0

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

1

OData的一个参数,但它可以是作为请求体通过的JSON字典。 See the example here“标题下的”调用动作“和Google的ODataActionParameters,以查看.NET的WebAPI如何实现OData参数字典要求。