思想领袖
Graphql – 改变和改进应用程序通信的方式

不久,下一代人将在Fortnite大厅中购买加密货币并检查他们的单位信托余额,这将通过许多技术进步来实现。
我们今天讨论的技术进步是应用程序之间以及公司与应用程序之间的数据传输方式(读取、更新、添加/删除)。应用程序编程接口(API)是定义这种数据通信的架构,随着这些标准的发展,处理要求和数据存储要求变得不那么繁琐。
在“轻量级”资源使用方面,领先者是GraphQL,一种开源的数据查询和操作语言。其生态系统的基础是其规范和围绕它创建的一系列工具。
它并不是新东西——时间流逝得很快。Facebook在2012年开发了它,并仅用于内部的移动应用程序开发。2015年,它被“开源”,如今它由GraphQL基金会(https://graphql.org/foundation/)负责,其进一步的开发。
那么,我为什么现在要写关于它的文章呢?典型的技术采用之路将遵循以下步骤:1)爱好者/个人项目,2)跨多种语言的实现,3)跨初创公司和小公司的实现,4)中型公司和产品开发,5)大型企业和科技巨头。
GraphQL已经达到了第5级。目前,它被GitHub、Pinterest、Shopify 、Microsoft等公司使用,最近,截至2022年3月,Salesforce也开始使用它。
在寻找一种更高效的方式来从Salesforce中获取数据时,我发现了他们的GraphQL文档,并开始阅读和探索如何实现它。
它与传统的REST API有什么不同?
- GraphQL的一个主要优势是您可以查询并仅返回特定的数据。如果您只想要两个与特定客户事件相关的字段,那么您就会得到这些。传统的REST API将返回与事件相关的所有字段,这可能有100多个字段。现在,您必须处理您不想要的所有数据。这被称为数据过度获取(under fetching也是一个问题)。
- 上述优势使GraphQL比其他API方法更快地返回数据。
- GraphQL是一种强类型语言,这意味着代码错误将在程序运行之前被捕获,而不是在运行期间。
- 围绕GraphQL构建了一套很好的工具,使其对开发者非常友好。
- GraphQL只有一个端点,而REST API有多个端点。这意味着您可以在单个请求中获取所有数据。
硬币的两面:请求者(客户端)和提供者(GraphQL主机)
我迄今为止一直从数据“请求”角度看待GraphQL。例如,Salesforce或Microsoft等公司设置了GraphQL API,您可以使用它来查询和操作数据(读取、更新、添加)。
例如,如果我们想在客户门户中包含来自Salesforce的客户事件数据,最有效的方法是通过GraphQL查询从门户到Salesforce GraphQL服务器请求确切的数据。您将得到您想要的确切数据,无需过度或不足获取,因此无需额外的处理或数据存储。
硬币的另一面是设置GraphQL架构的组织,以便客户可以高效地访问他们想要的数据。
在构建GraphQL API时,组织创建了一个模型,将所有系统集成到一个模型中。它统一了这些系统,一旦完成,就消除了底层系统的复杂性。完成后,通过API查询数据变得毫不费力。
当比较应用程序或提供者时,我会查看他们为我提供的功能,以便我可以从他们那里获取我的数据。我不想通过电子邮件或依赖于僵化的预定义报告来获取数据。我想能够以灵活、及时的方式“插入”我的数据并查询它。如果两个应用程序/提供者在其他比较点上相似,并且一个提供REST API或GraphQL API,我绝对会选择提供API的那个。












