OData和REST Web服务之间的区别

Sco*_*ott 192 rest web-services odata

在研究一些Web服务时,我遇到了微软称之为OData的这种"新"技术.通过阅读他们在OData中的描述,我很难区分OData和REST-ful Web服务.有人可以帮我理解差异吗?

Dar*_*ler 95

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


我刚才在这里写了一篇关于这个主题的帖子.

正如Franci所说,OData基于Atom Pub.但是,他们在顶部分层了一些功能,遗憾的是忽略了流程中的一些REST约束.

OData服务的查询功能要求您根据响应中不可用或链接的信息构造URI.这是REST人们称之为带外信息并引入客户端和服务器之间隐藏耦合的内容.

引入的另一种耦合是通过使用EDMX元数据来定义条目内容中包含的属性.可以在名为$ metadata的固定端点上发现此元数据.同样,客户需要提前知道,无法发现.

遗憾的是,微软认为不适合创建媒体类型来描述这些关键数据,因此任何OData客户端都必须对它正在与之交谈的服务及其接收的数据做出一系列假设.

  • @DarrelMiller你提到你的答案现在已经过时了.关注添加您对该主题的看法的更新?我仍然有兴趣了解OData 4和REST之间的区别.非常感谢 (7认同)
  • 实际上这个*已经过时了.OData的V3添加了"JSON Light",它解决了这两个问题(实际上只是一个),即$ metadata是你知道构建查询的方式,所以缺少的只是资源表示中$ metadata的链接.这已被添加,因此这两个问题一下子就消失了. (6认同)
  • @Kurren这是我的待办事项清单,但不幸的是它是一个很长的清单. (2认同)
  • @DarrelMiller希望您能尽快找到一些时间来更新帖子,以便与OData V4保持同步. (2认同)

Fra*_*nov 62

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

不同之处在于OData是一种特定的协议; REST是架构风格和设计模式.


Rus*_*sby 30

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

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

如果你想快速总结一下,可以把它想象成:

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


tat*_*igo 19

2012年OData经历了标准化,所以我只是在这里添加一个更新.

首先是定义:

REST - 是一种如何通过HTTP发送消息的体系结构.

OData V4 - 是REST的一个特定实现,它真正定义了不同格式的消息内容(目前我认为是AtomPub和JSON).ODataV4遵循休息原则.

例如,asp.net人员将主要使用WebApi控制器将对象序列化/反序列化为JSON,并让javascript对其执行某些操作.Odata的观点是能够通过开箱即用的选项直接从URL查询.


mca*_*nti 9

从OData 文档:

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

...

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


Raj*_*rma 5

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

OData RESTful API 易于使用。OData 元数据是 API 数据模型的机器可读描述,支持创建强大的通用客户端代理和工具。其中一些可以帮助您与 OData 交互,即使您对协议一无所知。以下 6 个步骤演示了跨不同编程平台使用 OData 的 6 个有趣场景。但如果您是非开发人员并且只想简单地使用 OData,那么 XOData 是您的最佳起点。

欲了解更多详细信息,请访问http://www.odata.org/