oData与REST服务有何不同?


15

我正在考虑编写Web服务API,并且正在考虑创建REST服务。在这种情况下,OData是什么意思?您能解释一下OData和REST之间的区别吗?


Answers:


11

REST是一种体系结构,用于说明如何使用HTTP从客户端到服务器来回发送消息。OData是Microsoft倡导的标准,它使用REST架构通过HTTP 发送特定类型的消息。OData讨论消息的外观(内容)。REST是如何来回发送这些消息的体系结构。


5

我同意@jkohlhepp和@Tom Squires,尽管会添加一些细节。

OData是一个开放标准(由Microsoft倡导,但已被Microsoft采纳,并且可用于许多平台,包括iOS和Android)。

OData有效负载基于Atom(读取)和AtomPub(更新)格式。(顺便说一句,Atom还是流行的RSS feed格式的基础。)Atom是可扩展的,OData利用此功能来创建众所周知的扩展。例如,对于OData服务,存在URI约定具有许多功能的,例如过滤(按日期或客户名称过滤)和排序等。以标准的方式(由OData定义)使用这些特殊约定,会使OData变得强大,因为它们的行为相似,我们可以构建工具来与之抗衡。

有一些著名的OData来源,例如Netflix(它们的所有电影数据都在这里-玩起来很有趣!)。

odata.org上阅读有关OData的全部信息。

祝好运!-法案


4

REST是构建Web服务的一种体系结构风格。这只是一个模型,表明您可以使用HTTP及其动词(POST / PUT / GET等)对服务公开的资源执行CRUD。但是REST缺少有关URL外观,请求/响应格式应如何,如何查询信息或在基本级别上服务首先要支持哪些操作和资源的任何详细信息!

在基于XML的Web服务世界中,我们拥有SOAP,WSDL,WS- *,它们定义了实现各种服务及其客户端之间互操作性的标准。

OData试图针对基于REST的Web服务执行此操作。

它以CSDL格式定义$ metadata,以说明服务支持的(实体/复杂)类型及其属性,数据类型,类型之间的关系以及服务是否还支持传统CRUD之外的某些特殊操作。

OData标准化了资源的URL格式,即/ Entity,/ Entity('id')或/ Entity(key1 = value1,key2 = value2)...等等。

OData在JSON和AtomXml中标准化了关于数据及其元数据的结构的请求/响应格式。

OData还指定了一种非常丰富的查询语言,以使消费者可以在$ filter,$ orderby,$ skip,$ top,$ expand的帮助下,查询您的服务以获取所需的精确信息。

OData可帮助您描述整个数据模型-实体及其关系,并支持各种操作,例如对这些实体和/或关系的CREATE,UPDATE,DELETE,GET,MERGE甚至CUSTOM OPERATIONS。

OData v4现在是OASIS标准,在其早期版本的基础上进行了许多改进。OData的生态系统正在缓慢增长。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.