上下文:
我有一个以下形式的现有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功能可能有用)?
澄清:
答案 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有什么好处。