是否可以将我的Web API转换为OData API?

时间:2015-07-03 20:05:03

标签: asp.net asp.net-mvc odata

上下文

我有一个以下形式的现有Web API: http://site/api/ {面积} slicer1 =阿尔法&安培; slicer1 =测试&安培;开始时间=有时&安培;结束时间=某时

它在ASP MVC中实现。 API的功能处理参数并将它们提供给SQL查询。成功时,它返回带有来自SQL的JSON数据的IHttpActionResult。

请注意,API缺少实体模型或实体关系图。它本质上只是SQL查询的包装器。

问题

最近,我开始学习OData。看起来OData是为URL本身设计的,用于控制数据的过滤方式,而不是创建自定义SQL查询进行过滤。

因此,我想知道我的Web API是否可以转换为OData API,如果是,我需要做什么OData功能(例如,OData v4功能可能有用)?

澄清

  1. 我没有编写任何代码,也没有要求代码作为答案。
  2. 我想知道OData功能可以实现我的场景(v4功能,操作等等),或者OData和Web API是如此不同以至于我的问题没有意义。
  3. 预见“你为什么问”这个问题 - 我只是对技术可行性感兴趣,作为一种学习练习。

1 个答案:

答案 0 :(得分:1)

您可以切换到OData API但如果没有实体,即没有IQueryable可以查询,您仍然需要自己执行SQL命令生成。虽然这不太难 - 我们在我工作的项目中做到了。

您还必须问自己,您希望切换到OData的程度。例如,您可以决定只使用其(类型安全的)查询字符串解析功能,并从解析的过滤器树生成您自己的SQL(如上所述)。

另一方面,拥有完全成熟的OData API也会规定响应格式符合标准。这意味着您可以使用OData感知工具(例如Excel,KendoUI Grid等)开始连接API。我不知道这是否会为您的用例带来任何好处。

你的问题

  

我需要做什么OData功能

对我来说并不完全清楚。没有OData功能可以帮助您从Web API迁移到OData API。 OData只是一组标准化查询(CRUD)和响应格式。您也可以通过使用开箱即用的Web API工具自行实现所有内容,但您可能希望使用Web API OData包。

对你来说最重要的问题是问问自己,你使用OData有什么好处。