【问题标题】:Is it possible to convert my web API to an OData API?是否可以将我的 Web API 转换为 OData API?
【发布时间】:2015-09-21 16:41:36
【问题描述】:

上下文

我有一个以下形式的现有 Web API: http://site/api/{area}?slicer1=alpha&slicer1=beta&starttime=sometime&endtime=sometime

它在 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. 预料到“你为什么要问”这个问题 - 我只是对作为学习练习的技术可行性感兴趣。

【问题讨论】:

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


    【解决方案1】:

    您可以切换到 OData API,但如果您没有实体,即没有要查询的 IQueryable,您仍然需要自己生成 SQL 命令。不过这并不太难——我们在我正在从事的项目中做到了。

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

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

    你的问题

    我需要哪些 OData 功能

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

    对您来说最重要的问题是问问自己使用 OData 有什么优势。

    【讨论】:

    • 您提到“例如,您可以决定只使用它的(类型安全的)查询字符串解析功能,并从解析的过滤器树中生成您自己的 SQL”-您知道我在哪里可以找到这方面的在线示例?
    • 是的。例如这里:github.com/OData/ODataSamples/tree/master/WebApi/v4/…。这个活页夹的结果是一个几乎看起来像 SQL 的 NHibernate 查询。您可以以此为起点。
    猜你喜欢
    • 2013-11-14
    • 2012-03-18
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    相关资源
    最近更新 更多