2015-07-03 64 views
0

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

我有以下形式的现有Web API: http://site/api/ {地区} slicer1 =阿尔法& slicer1 =公测&开始时间=有时&结束时间=有时

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

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

问题

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

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

澄清

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

回答

1

你可以切换到OData API,但如果你没有实体,即没有IQueryable来查询,你仍然必须自己做SQL命令。这并不难 - 我们在项目中工作。

您还必须问自己想要切换到OData的程度。例如,您可以决定使用它的(类型安全的)查询字符串分析功能,并从分析的过滤器树中生成您自己的SQL(如上所述)。另一方面,拥有完全成熟的OData API也会规定响应格式符合标准。这意味着您可以使用OData注意工具(例如Excel,KendoUI网格等)开始连接到您的API。我不知道这是否会为您的使用情况带来任何好处。

你的问题

我需要做的

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

对你而言,最重要的问题是问自己使用OData有什么优势。

+0

你提到了“例如,你可以决定使用它的(类型安全的)查询字符串解析功能,并从解析的过滤器树中生成你自己的SQL” - 你知道我在哪里可以找到这个在线例子? – Craig

+1

是的。例如这里:https://github.com/OData/ODataSamples/tree/master/WebApi/v4/NHibernateQueryableSample。这个活页夹的结果是一个NHibernate查询,它几乎看起来像SQL。你可以把它作为一个起点。 – Dejan

相关问题