OData和REST web服务的区别

OData和REST-ful web服务之间的区别是什么?

177653 次浏览

OData协议构建在AtomPub协议之上。AtomPub协议是REST API设计的最佳示例之一。所以,在某种意义上你是对的——OData只是另一个REST API,每个OData实现都是一个REST web服务。

不同之处在于OData是一个特定的协议;REST是体系结构风格和设计模式。

更新警告,这个答案是非常过时的,现在OData V4可用。


我前段时间写了一篇关于这个主题的文章。

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

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

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

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

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

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

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

  • REST——设计模式
  • OData启用技术

从OData 文档:

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

...

OData协议不同于其他基于rest的web服务方法,因为它提供了一种统一的方式来描述数据和数据模型。

2012年OData进行了标准化,所以我只是在这里添加了一个更新。

首先是定义:

休息 -是一个如何通过HTTP发送消息的体系结构。

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

例如,asp.net用户将主要使用WebApi控制器将对象序列化/反序列化为JSON,并让javascript对其进行处理。Odata的关键在于能够直接从URL进行查询 开箱即用的选项。< / p >
OData(开放数据协议)是定义最佳的OASIS标准 构建和使用RESTful api的实践。OData帮助您 专注于您的业务逻辑,同时构建RESTful api 必须考虑定义请求和响应的方法 标题,状态码,HTTP方法,URL约定,媒体类型, 有效负载格式和查询选项等。OData还可以指导您 跟踪更改,为可重用过程定义函数/操作 以及发送异步/批处理请求等。此外,OData 提供扩展设施,以满足您的任何定制需求 RESTful api。< / p >

OData RESTful api易于使用。OData元数据,a api的数据模型的机器可读描述,启用 创建强大的通用客户代理和工具。一些 它们可以帮助您在一无所知的情况下与OData进行交互 关于协议。下面的6个步骤展示了6个有趣的 在不同编程平台上使用OData的场景。 但如果你不是一个开发人员,只是想玩玩 OData, XOData是你最好的开始。

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

ODATA是一种特殊的休息,我们可以从URL中统一查询数据

休息代表再保险presentational 年代tate __abc3transferer,这是一种基于资源的架构风格。基于资源意味着数据和功能被视为资源。

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