【发布时间】:2010-03-16 21:47:02
【问题描述】:
OData 和 REST-ful Web 服务有什么区别?
【问题讨论】:
-
一个是生产者,一个是消费者的推动者。
标签: web-services rest odata
OData 和 REST-ful Web 服务有什么区别?
【问题讨论】:
标签: web-services rest odata
更新警告,现在 OData V4 可用,这个答案已经过时了。
不久前我写了一篇关于这个主题的帖子here。
正如 Franci 所说,OData 基于 Atom Pub。然而,他们在上面分层了一些功能,不幸的是在这个过程中忽略了一些 REST 约束。
OData 服务的查询功能要求您根据响应中不可用或链接到的信息构建 URI。这就是 REST 人员所说的带外信息,并在客户端和服务器之间引入了隐藏的耦合。
引入的另一个耦合是通过使用 EDMX 元数据来定义条目内容中包含的属性。可以在称为 $metadata 的固定端点发现此元数据。同样,客户端需要提前知道这一点,不能被发现。
不幸的是,Microsoft 认为创建媒体类型来描述这些关键数据片段并不合适,因此任何 OData 客户端都必须对其正在与之通信的服务以及它正在接收的数据做出一系列假设。
【讨论】:
OData 协议建立在 AtomPub 协议之上。 AtomPub 协议是 REST API 设计的最佳示例之一。因此,从某种意义上说,您是对的 - OData 只是另一个 REST API,每个 OData 实现都是一个 REST-ful Web 服务。
不同的是OData是一个特定的协议; REST 是架构风格和设计模式。
【讨论】:
REST 是一种通用设计技术,用于描述如何访问 Web 服务。使用 REST,您可以发出 http 请求来获取数据。如果您在浏览器中尝试它,它就像访问一个网站一样,除了返回的不是网页,而是返回 XML。一些服务也会返回 JSON 格式的数据,这更容易与 Javascript 一起使用。
OData 是一种通过 REST 公开数据的特定技术。
如果你想快速总结一下,可以这样想:
【讨论】:
2012 年 OData 进行了标准化,所以我将在此处添加更新..
首先是定义:
REST - 是一种如何通过 HTTP 发送消息的架构。
OData V4-是REST的具体实现,真正定义了不同格式的消息内容(目前我认为是AtomPub和JSON)。 ODataV4 遵循其余原则。
例如,asp.net 的人们将主要使用 WebApi 控制器将对象序列化/反序列化为 JSON,并让 javascript 对其进行处理。 Odata 的重点是能够直接从 URL 查询 开箱即用的选项。
【讨论】:
来自ODatadocumentation:
OData 协议是一种应用程序级协议,用于通过 RESTful Web 服务与数据进行交互。
...
OData 协议与其他基于 REST 的 Web 服务方法的不同之处在于它提供了一种统一的方式来描述数据和数据模型。
【讨论】:
OData(开放数据协议)是一个 OASIS 标准,它定义了最好的 构建和使用 RESTful API 的实践。 OData 帮助您 专注于您的业务逻辑,同时构建 RESTful API,无需 不必担心定义请求和响应的方法 标头、状态代码、HTTP 方法、URL 约定、媒体类型、 有效负载格式和查询选项等。OData 还指导您 跟踪更改,定义可重用过程的功能/操作 并发送异步/批处理请求等。此外,OData 提供扩展设施以满足您的任何定制需求 RESTful API。
OData RESTful API 易于使用。 OData 元数据,一个 API 数据模型的机器可读描述,使 创建强大的通用客户端代理和工具。一些 即使您一无所知,它们也可以帮助您与 OData 进行交互 关于协议。以下6个步骤展示了6个有趣的 跨不同编程平台的 OData 消费场景。 但是,如果您是非开发人员并且想简单地玩 OData,XOData是你最好的开始。
【讨论】:
ODATA 是一种特殊的REST,我们可以在其中统一查询数据 从 URL。
【讨论】:
REST 代表 REpresentational State Ttransfer,这是一种基于资源的架构风格。基于资源意味着将数据和功能视为资源。
OData 是一种基于 Web 的协议,它定义了一组用于构建和使用 RESTful Web 服务的最佳实践。 OData 是一种创建 RESTful Web 服务的方法,因此是 REST 的一种实现。
【讨论】: