我想使用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);
答案 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参数字典要求。