【问题标题】:Difference between OData and REST web servicesOData 和 REST Web 服务之间的区别
【发布时间】:2010-03-16 21:47:02
【问题描述】:

OData 和 REST-ful Web 服务有什么区别?

【问题讨论】:

  • 一个是生产者,一个是消费者的推动者。

标签: web-services rest odata


【解决方案1】:

更新警告,现在 OData V4 可用,这个答案已经过时了。


不久前我写了一篇关于这个主题的帖子here

正如 Franci 所说,OData 基于 Atom Pub。然而,他们在上面分层了一些功能,不幸的是在这个过程中忽略了一些 REST 约束。

OData 服务的查询功能要求您根据响应中不可用或链接到的信息构建 URI。这就是 REST 人员所说的带外信息,并在客户端和服务器之间引入了隐藏的耦合。

引入的另一个耦合是通过使用 EDMX 元数据来定义条目内容中包含的属性。可以在称为 $metadata 的固定端点发现此元数据。同样,客户端需要提前知道这一点,不能被发现。

不幸的是,Microsoft 认为创建媒体类型来描述这些关键数据片段并不合适,因此任何 OData 客户端都必须对其正在与之通信的服务以及它正在接收的数据做出一系列假设。

【讨论】:

  • @felickz 抱歉。我遇到了 DNS 问题。它现在应该可以工作了。或者将在您的 dns 缓存过期时。
  • 其实这个已经过时了。 OData 的 V3 添加了“JSON Light”,它解决了这两个问题(实际上只是一个问题),即 $metadata 是您知道如何构建查询的方式,因此所缺少的只是资源表示中指向 $metadata 的链接。已添加,因此这两个问题一口气消失了。
  • @DarrelMiller 你提到你的答案现在已经过时了。想添加您对该主题的意见的更新吗?我仍然有兴趣了解 OData 4 和 REST 之间的区别。非常感谢
  • @Kurren 它在我的待办事项清单上,但不幸的是它是一个很长的清单。
  • @DarrelMiller 希望您能抽出时间尽快更新帖子,使其与 OData V4 保持同步。
【解决方案2】:

OData 协议建立在 AtomPub 协议之上。 AtomPub 协议是 REST API 设计的最佳示例之一。因此,从某种意义上说,您是对的 - OData 只是另一个 REST API,每个 OData 实现都是一个 REST-ful Web 服务。

不同的是OData是一个特定的协议; REST 是架构风格和设计模式。

【讨论】:

  • 我可能错了(刚开始学习 odata),但是从 [protocol][odata.org/documentation] 的第 3 版开始,似乎还指定了 JSON 格式,您可以选择使用它.你能解释一下吗?
  • @JohannesRudolph,老实说我不知道​​。在过去的两年里,我没有看过 OData。但微软很可能会添加 JSON 支持。但请注意,这不会以任何方式改变此处的任何响应。 JSON 与 XML 只是 REST 资源的呈现问题。
  • 您可以在请求中指定您想要的格式。大多数实现都应该支持 XML 和 JSON,例如将 Accept 标头设置为 application/json(从 OData 版本 2 开始)
【解决方案3】:

REST 是一种通用设计技术,用于描述如何访问 Web 服务。使用 REST,您可以发出 http 请求来获取数据。如果您在浏览器中尝试它,它就像访问一个网站一样,除了返回的不是网页,而是返回 XML。一些服务也会返回 JSON 格式的数据,这更容易与 Javascript 一起使用。

OData 是一种通过 REST 公开数据的特定技术。

如果你想快速总结一下,可以这样想:

  • REST - 设计模式
  • OData - 支持技术

【讨论】:

  • REST 不限于 HTTP 或网络
【解决方案4】:

2012 年 OData 进行了标准化,所以我将在此处添加更新..

首先是定义:

REST - 是一种如何通过 HTTP 发送消息的架构。

OData V4-是REST的具体实现,真正定义了不同格式的消息内容(目前我认为是AtomPub和JSON)。 ODataV4 遵循其余原则。

例如,asp.net 的人们将主要使用 WebApi 控制器将对象序列化/反序列化为 JSON,并让 javascript 对其进行处理。 Odata 的重点是能够直接从 URL 查询 开箱即用的选项。

【讨论】:

    【解决方案5】:

    来自ODatadocumentation

    OData 协议是一种应用程序级协议,用于通过 RESTful Web 服务与数据进行交互。

    ...

    OData 协议与其他基于 REST 的 Web 服务方法的不同之处在于它提供了一种统一的方式来描述数据和数据模型。

    【讨论】:

      【解决方案6】:

      OData(开放数据协议)是一个 OASIS 标准,它定义了最好的 构建和使用 RESTful API 的实践。 OData 帮助您 专注于您的业务逻辑,同时构建 RESTful API,无需 不必担心定义请求和响应的方法 标头、状态代码、HTTP 方法、URL 约定、媒体类型、 有效负载格式和查询选项等。OData 还指导您 跟踪更改,定义可重用过程的功能/操作 并发送异步/批处理请求等。此外,OData 提供扩展设施以满足您的任何定制需求 RESTful API。

      OData RESTful API 易于使用。 OData 元数据,一个 API 数据模型的机器可读描述,使 创建强大的通用客户端代理和工具。一些 即使您一无所知,它们也可以帮助您与 OData 进行交互 关于协议。以下6个步骤展示了6个有趣的 跨不同编程平台的 OData 消费场景。 但是,如果您是非开发人员并且想简单地玩 OData,XOData是你最好的开始。

      更多详情,http://www.odata.org/

      【讨论】:

        【解决方案7】:

        ODATA 是一种特殊的REST,我们可以在其中统一查询数据 从 URL。

        【讨论】:

          【解决方案8】:

          REST 代表 REpresentational State Ttransfer,这是一种基于资源的架构风格。基于资源意味着将数据和功能视为资源。

          OData 是一种基于 Web 的协议,它定义了一组用于构建和使用 RESTful Web 服务的最佳实践。 OData 是一种创建 RESTful Web 服务的方法,因此是 REST 的一种实现。

          【讨论】:

            猜你喜欢
            • 2010-11-29
            • 2015-01-05
            • 2017-01-06
            • 2013-09-24
            • 2012-03-19
            • 2017-10-02
            • 1970-01-01
            • 2013-09-18
            • 2011-08-21
            相关资源
            最近更新 更多