据我所知,OData更倾向于消费数据,即以只读方式。我想问一下是否打算使用OData来调用远程函数,例如域服务的方法。
在查看OData 4.0 spec, chapter 4.3 "Addressing Entities"时,确实有 actionCall , entityFunctionCall 等术语。但到目前为止,这当然也只适用于“服务” “,我猜。
我想做http://example.org/service/BankAccountDomainService/ApproveBankAccount(abcde-123456)
这样的事情......这有意义吗?
答案 0 :(得分:0)
OData是用于创建和使用数据API的标准化协议。 OData建立在像HTTP这样的核心协议和REST等普遍接受的方法之上。结果是公开全功能数据API的统一方式。
除了提供绑定到实体的功能和操作外,OData还提供服务级别的功能和操作。
请参考以下网址获取示例: https://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/ODataActionsSample/
但它基于OData v3,很快就会有OData v4的样本。
答案 1 :(得分:0)
如果我理解你是正确的,你想调用一个未绑定的动作,称为“动作导入”,因为你的动作“ApproveBankAccount”没有限制在任何类型.... 根据Odata协议,后续URL应为“POST”:“帐户”应包含在Payload中。
网址:http://example.org/service/BankAccountDomainService/ApproveBankAccount()
有效载荷:{abcde-123456}
或者,您也可以在实体类型“BankAccount”上设计有界操作“批准”,发布的网址应为:
http://example.org/service/BankAccountDomainService/BankAccount(abcde-12345)/NameSpace.Approve()