技术干货

REST API行业讨论:OData vs GraphQL vs

2018-01-04  本文已影响820人  豆志昂扬

同事翻译了一篇关于Rest API的文章,有点意思,分享一下。

传送门链接

===========正文===============
如何与REST API交互正在不断地发展。在这篇文章中,我们来看看一些处于Web服务技术前沿的标准。

Progress公司的高级软件工程师–Jeff Leinbach和开发者布道师–Saikrishna Teja Bobba,进行了这项研究,以帮助你决定在你的应用程序或数据分析管理工具中考虑采用哪种标准API。我们对比了OData,GraphQL和ORDS之间的差异,这些是用于通过Internet进行查询和更新数据的标准API和服务。关注点在于跨API的互通性,以进行分析、集成和数据管理。

我们一直在基于业界活动,如AWS re:Invent,Oracle OpenWorld,Dreamforce,API World等众多的讨论来跟踪这些议题。Progress公司在数据访问标准,包括ODBC,JDBC,ADO.NET以及现在的OData(REST)的开发和贡献上也有丰富的经验,并且也是第一个加入OData技术委员会的成员。

什么是REST?

REST(representational state transfer)或者REST风格的Web服务是一种提供在Internet上计算机系统间互操作性的方式。符合REST的Web服务允许请求系统使用统一和预定义的一组无状态操作来访问和操控Web资源的文本表示。REST风格的实现使用诸如HTTP,URI,JSON和XML这些标准。

请注意,REST是一种架构风格,而不是标准。

通过Internet查询数据的标准API

对比标准API

标准查询功能

提取元数据

API版本化和维护

令人头疼的一件事是在API变更时处理应用程序的更新,同时需要维护API的旧版本。

样例

为了直观地说明使用这些API的差异,以下两段样例代码显示了如何在GraphQL和OData中执行“排序”。 GraphQL-code

在GraphQL的所有Opportunity函数的调用示例中,它的名字有点显而易见。但是,在GraphQL中没有任何可以告知你可以传入什么参数,以及参数值会如何影响函数的行为。这种行为在底层实现的基础上会有所不同。

OData-code

相比之下,OData会准确地告知你在使用orderBy查询参数时它将如何运作,因为它的行为被定义为规范的一部分。

建议

standard-apis-table-5

GraphQL更像是一种编程语言,这使得它非常灵活。它功能强大,但这意味着你的应用程序与特定的GraphQL服务实现耦合更紧密。没有办法一般地描述它是如何工作的。

对那些习惯于处理Web服务的人来说,GraphQL也有些别扭,因为为了查询数据,你并不是执行GET操作–从一个通常REST Web服务获取数据的方式,而是执行POST请求,确切地定义你想要在响应中得到的内容,如字段和功能。

因此,尽管GraphQL使你能够从元数据中确定哪些字段和功能是可用的,但你仍不一定知道它们在语义上的含义。


这边文章主要关注API消费者,但是对于开发API,GraphQL的门槛更低些。如果你正在做一个快速的项目,GraphQL可能是一种方式,但你的应用程序与GraphQL的实现耦合紧密仍会存在问题。

OData很强大,但有很多繁重的工作,因为你必须遵守标准的所有行为,有一个你必须兼容OData的最少级别的行为集。这给服务开发者带来了表较大的壁垒。但是此外,已有许多的OData客户端可以帮助你快速轻松地启动和运行OData服务,已经有具有OData功能的应用程序清单,以及OData客户端库,这些都可以帮助你开发一个新的应用程序。

上一篇 下一篇

猜你喜欢

热点阅读