当前位置:  开发笔记 > 编程语言 > 正文

OData,JsonAPI,GraphQL有什么区别?

如何解决《OData,JsonAPI,GraphQL有什么区别?》经验,为你挑选了1个好方法。

我在职业生涯中使用过OData很多,现在很少有来自不同团队的同事建议我们转向JsonAPI和GraphQL,因为它与微软无关.我对这两种查询语言都没有多少经验.据我所知,OData是Salesforce,IBM,Microsoft使用的标准,它非常成熟.为什么要切换到JsonAPI和/或GraphQL?有真正的好处吗?JsonAPI和GraphQL是新标准吗?基于流行度改变公共api实现似乎毫无用处,尤其是在没有大的好处时.

有人可以赐教吗?



1> albogdano..:

OData是与JSON API类似的规范.它们都描述了创建和使用RESTful API的标准.GraphQL是一种新的API设计方法,它指定了一种查询API资源的不同方法.

OData:自2007年以来在Microsoft设计和开发,由OASIS联盟标准化.最新版本V4作为国际标准提交ISO/IEC JTC 1批准.技术委员会(TC)的公司包括CA Technologies,Citrix,IBM,Microsoft,Progress,Red Hat,SAP和SDL.

有许多流行的编程语言库 - .NET,Java,JavaScript,PHP和Ruby.规范允许动态资源,并且有一个服务文档,列出了客户端要发现的所有API端点.此外,还有一个描述架构的元数据文档.

JSON API:JSON API最初是由Yehuda Katz于2013年5月起草的.这个初稿是从Ember Data的REST适配器隐式定义的JSON传输中提取的.该规范的当前稳定版本是1.0.JSON API规范是针对客户端和服务器端的大多数编程语言实现的.

JSON API通过linkJSON文档中的属性支持HATEOAS .其他功能包括分页,排序,过滤和关系.JSON API服务器生成的JSON文档非常详细,具有大量嵌套属性.

GraphQL:自2015年起在Facebook开发.该规范仍然是一份工作草案.它在React粉丝中很受欢迎,主要与React或Vue.js结合使用.与GraphQL类似的是Falcor,它也是相对较新的.

虽然GraphQL使用HTTP,但它不被视为REST,而是REST的替代方案.相反,它将查询/响应模型用于单个(虚拟)JSON文档.这个新模型对于开发人员来说有点好处,但它对REST的好处值得商榷.鉴于其年轻,该生态系统尚未成熟.

为了清晰和完整起见,我将OpenAPI包含在列表中,尽管它不完全是API规范.这可能会让一些人感到困惑.OpenAPI标准是一种与语言无关的标准,用于描述和定义API.您的API可以遵循上述标准之一(不包括GraphQL),也可以使用Swagger 3进行记录.

OpenAPI(又名Swagger):作为OpenAPI Initiative和Linux Foundation的一部分开发.得到了谷歌,微软,IBM,SAP,甲骨文,Ebay和PayPal等大型科技公司的支持.该规范的当前版本是3.0.1.大多数编程语言都有实现,还有许多其他工具,如Web UI生成器等.

使用Swagger等规范获得的最好的东西就是围绕它们的工具 - 用于API文档页面的生成器,用于客户端SDK代码的生成器等.

此标准可能是当今API文档和代码生成中最常用的标准.它的API网关(仅限v2)中的Amazon Web Services等云提供商也支持它.

我的个人意见:

正如您所看到的,那里有很多RESTful规范,而不是单一的通用标准.我同意xumix的观点 - 他们似乎都患有"未发明在这里"的综合症.选择上述任何一项的好处都很小,特别是如果你的项目是中小型的.您的API实现的规范是否重要?可能不多.只需专注于构建一致且记录良好的API.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有