是否可以将我的网站 API 转换为 OData API?
Is it possible to convert my web API to an OData API?
上下文:
我有以下形式的现有网站 API:
http://site/api/{区域}?slicer1=alpha&slicer1=beta&starttime=sometime&endtime=sometime
它在 ASP MVC 中实现。 API 的函数处理参数并将它们提供给 SQL 查询。成功时,它 returns 一个 IHttpActionResult 带有来自 SQL.
的 JSON 数据
请注意,API 缺少实体模型或实体关系图。它本质上只是 SQL 查询的包装器。
问题:
最近开始学习OData。似乎 OData 是为 URL 本身设计的,以控制数据的过滤方式,而不是编写自定义 SQL 查询来过滤。
因此,我想知道我的 Web API 是否可以转换为 OData API,如果可以,我需要哪些 OData 功能才能做到这一点(对于例如,OData v4 函数是否有用)?
澄清:
- 我没有写任何代码,我也没有要求代码作为答案。
- 我想知道哪些 OData 功能可能支持我的场景(v4 函数、操作等...),或者如果 OData 和 Web APIs 如此不同以致于我的问题无法满足感觉。
- 期待 "Why are you asking" 这个问题 - 我只是对作为学习练习的技术可行性感兴趣。
您可以切换到 OData API,但如果您没有实体,即没有 IQueryable
可查询,您仍然需要自己执行 SQL 命令生成.不过这并不难 - 我们在我正在从事的项目中做到了。
你还得问问自己,你想在多大程度上转向OData。例如,您可以决定只使用它的(类型安全的)查询字符串解析功能,并从解析的过滤器树中生成您自己的 SQL(如上所述)。
另一方面,拥有完全成熟的 OData API 也会规定响应格式符合标准。这意味着您可以开始使用 OData 感知工具(例如 Excel、KendoUI Grid 等)连接到您的 API。我不知道这是否会给您的用例带来任何好处。
你的问题
what OData capabilities I'd need to do that
我不是很清楚。没有可帮助您从 Web API 迁移到 OData API 的 OData 功能。 OData 只是一组标准化的查询 (CRUD) 和响应格式。您也可以通过使用开箱即用的 Web API 设施自行实施所有内容来实现 OData 兼容,但您可能想要使用 Web API OData 包。
对您来说最重要的问题是问问自己使用 OData 有什么优势。
上下文:
我有以下形式的现有网站 API: http://site/api/{区域}?slicer1=alpha&slicer1=beta&starttime=sometime&endtime=sometime
它在 ASP MVC 中实现。 API 的函数处理参数并将它们提供给 SQL 查询。成功时,它 returns 一个 IHttpActionResult 带有来自 SQL.
的 JSON 数据请注意,API 缺少实体模型或实体关系图。它本质上只是 SQL 查询的包装器。
问题:
最近开始学习OData。似乎 OData 是为 URL 本身设计的,以控制数据的过滤方式,而不是编写自定义 SQL 查询来过滤。
因此,我想知道我的 Web API 是否可以转换为 OData API,如果可以,我需要哪些 OData 功能才能做到这一点(对于例如,OData v4 函数是否有用)?
澄清:
- 我没有写任何代码,我也没有要求代码作为答案。
- 我想知道哪些 OData 功能可能支持我的场景(v4 函数、操作等...),或者如果 OData 和 Web APIs 如此不同以致于我的问题无法满足感觉。
- 期待 "Why are you asking" 这个问题 - 我只是对作为学习练习的技术可行性感兴趣。
您可以切换到 OData API,但如果您没有实体,即没有 IQueryable
可查询,您仍然需要自己执行 SQL 命令生成.不过这并不难 - 我们在我正在从事的项目中做到了。
你还得问问自己,你想在多大程度上转向OData。例如,您可以决定只使用它的(类型安全的)查询字符串解析功能,并从解析的过滤器树中生成您自己的 SQL(如上所述)。
另一方面,拥有完全成熟的 OData API 也会规定响应格式符合标准。这意味着您可以开始使用 OData 感知工具(例如 Excel、KendoUI Grid 等)连接到您的 API。我不知道这是否会给您的用例带来任何好处。
你的问题
what OData capabilities I'd need to do that
我不是很清楚。没有可帮助您从 Web API 迁移到 OData API 的 OData 功能。 OData 只是一组标准化的查询 (CRUD) 和响应格式。您也可以通过使用开箱即用的 Web API 设施自行实施所有内容来实现 OData 兼容,但您可能想要使用 Web API OData 包。
对您来说最重要的问题是问问自己使用 OData 有什么优势。