gpt4 book ai didi

odata - OData,JsonAPI,GraphQL有什么区别?

转载 作者:行者123 更新时间:2023-12-03 10:42:54 28 4
gpt4 key购买 nike

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

有人可以启发我吗?

最佳答案

OData是与JSON API类似的规范。它们都描述了用于创建和使用RESTful API的标准协议(protocol)。 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通过JSON文档中的link属性支持HATEOAS。其他功能包括分页,排序,过滤和关系。 JSON API服务器生成的JSON文档非常冗长,具有许多嵌套属性。
  • GraphQL :自2015年以来在Facebook上开发。specification仍是工作草案。它在React爱好者中非常流行,并且主要与React或Vue.js结合使用。与GraphQL相似的是Falcor,它也相对较新。
    尽管GraphQL使用HTTP,但它不被认为是REST,而是REST的替代。相反,它在单个(虚拟)JSON文档中使用了查询/响应模型。对于开发人员来说,这种新模型更好一些,但是它在REST之上的好处值得商bat。考虑到它的年龄,生态系统尚未成熟。

  • 为了清楚和完整起见,我将OpenAPI包括在列表中,尽管它并非完全是API规范。这会使某些人感到困惑。 OpenAPI标准是用于描述和定义API的与语言无关的标准。您的API可以遵循上述标准之一(不包括GraphQL),并且还可以使用OpenAPI 3进行记录。
  • OpenAPI(又称Swagger):作为OpenAPI Initiative和Linux Foundation的一部分开发。得到Google,Microsoft,IBM,SAP,Oracle,Ebay和PayPal等大型科技公司的支持。规范的当前版本是3.0.2。大部分编程语言都有实现,还有许多其他工具,如Web UI生成器等。

  • 像OpenAPI这样的规范所带给您的最好的东西就是围绕它们的工具-API文档页面的生成器,客户端SDK代码的生成器等。
    该标准可能是当今最常用的API声明,文档和代码生成。云提供商(如Amazon Web Services)在其API网关中也支持它。
    总而言之,OData和JSON API都是JSON数据格式,可在数据周围添加上下文和功能(例如链接),GraphQL是一种全新的查询和变异JSON数据的新方法,而OpenAPI是声明和记录任何数据的标准方法RESTful API。
    我的个人意见:
    如您所见,那里有很多RESTful规范,而不是一个通用标准。我同意 xumix的用法-他们似乎都患有“此处未发明”综合症。选择以上任何一种方法的好处都是很小的,特别是在您的项目为中小型项目时。
    您的API实现哪种规范有关系吗?大概不多。只需专注于构建一致且文档齐全的API。

    关于odata - OData,JsonAPI,GraphQL有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44711161/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com