use*_*510 4 .net odata asp.net-web-api asp.net-web-api2 odata-v4
在oData 4.0中经常引用动作和函数.我无法得到他们是什么以及他们是如何不同的.功能是否与我们在任何编程语言中的功能相同?什么是行动?以及两者是如何不同的.谢谢你的帮助.
操作 - 可用于对实体执行CRUD操作.这意味着,如果默认操作(POST/PUT/DELETE)不支持您的要求,您可以使用自定义操作创建,更新,删除实体.您还可以使用自定义操作从复杂类型的多个实体中获取数据.操作类似于SQL中的存储过程,它允许SELECT和DML查询.
函数 - 理想情况下,您应该使用函数来获取数据而不是数据修改.这些类似于SQL中的函数,它只允许SELECT查询.
从OData.org的规范来看,它们都是操作,区别在于是否有副作用。
在WebAPI/OData的实现中,您可以参考这里的文档:
http://odata.github.io/WebApi/#04-06-function-parameter-support
http://odata.github.io/WebApi/#04-07-action-parameter-support
可以看到签名很明显:
行动:
[HttpPost]
public IHttpActionResult PrimitiveAction(ODataActionParameters parameters)
Run Code Online (Sandbox Code Playgroud)
功能:
[HttpGet]
public string ComplexFunction([FromODataUri]Address c1, [FromODataUri]IEnumerable<Address> c2)
Run Code Online (Sandbox Code Playgroud)