加入收藏 | 设为首页 | 会员中心 | 我要投稿 三明站长网 (https://www.0598zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

使用GraphQL的5个理由

发布时间:2021-04-12 16:15:29 所属栏目:动态 来源:互联网
导读:杂架构中构建灵活、高性能的API方面发挥了重要作用。 然而,鉴于我们今天所处的动态技术环境,你的怀疑是可以原谅的。GraphQL会成为另一种潮流吗?如果它对这些公司有效,是否就一定对你有效?让我们讨论一下GraphQL的优点和挑战,以便你能够做出明智的决定。

杂架构中构建灵活、高性能的API方面发挥了重要作用。

然而,鉴于我们今天所处的动态技术环境,你的怀疑是可以原谅的。GraphQL会成为另一种潮流吗?如果它对这些公司有效,是否就一定对你有效?让我们讨论一下GraphQL的优点和挑战,以便你能够做出明智的决定。

2. 使用GraphQL的理由

作为一种为灵活性而设计的API技术,GraphQL对于API的开发者和消费者以及其背后的组织来说都是一个强有力的推动者。在本节中,我们将探讨GraphQL的一些关键领域。

(1) One Data Graph for All

对于拥有多个团队和系统,希望通过一个统一的API轻松获得其数据的组织而言,GraphQL是一个绝佳的选择。

无论你使用了多少数据库、服务、遗留系统和第三方api, GraphQL都可以通过提供客户机可以与之通信的单一端点来隐藏这种复杂性。GraphQL服务器负责从正确的位置获取数据,并且客户端永远不需要知道不同数据来自何处的详细信息。因此,在为客户和内部用户轻松提供数据时,GraphQL生态系统提供了最大的灵活性。

(2) 没有过度获取或不足获取

对于GraphQL API客户来说,另一个巨大的好处是他们可以准确地请求他们所需要的数据,甚至跨相关实体。这一点尤为重要,因为不同的客户有不同的数据需求,或者因为不同的业务逻辑,或者因为他们只是呈现了不同的数据视图(例如,Web与移动),也可能有不同的硬件限制。

通过比较,从REST API有效地检索重要数据要困难得多。从单个端点请求数据往往会返回比实际需要的更多的数据(超取),而请求几个相关实体的数据通常需要多次调用API(欠取)或为特定的客户端请求提供专门的端点(重复劳动)。GraphQL通过准确地提供每个客户端请求的数据来解决此问题,仅此而已。

(3) 更好的开发人员体验

GraphQL生态系统附带许多工具,使使用GraphQL变得轻而易举。像GraphiQL和GraphQL Playground这样的工具提供了丰富的体验,允许开发人员以最小的努力检查和尝试API,这要归功于我们将在下一节中讨论的自我文档化特性。

另外,像GraphQL Code Generator这样的代码生成工具可以用来进一步加快开发速度,而其他工具和最佳实践也可以用来解决具体问题,包括:

客户端缓存在几个客户端库中是开箱即用的。

基于游标的分页(Cursor-based pagination)提供了一种跨数据列表提供分页的方法。

DataLoader通过批处理数据提取请求来提高性能,并且还提供了服务器端缓存的基本级别。

(4) 更高质量的系统

GraphQL API是围绕着类型系统构建的,它列出了每个字段的名称和类型,以及不同实体之间的关系。这种类型的系统或架构用于验证客户端发送的查询。schema可以通过一个叫做自省(introspection)的功能进行查询,自省通常用于生成文档和代码,这些文档和代码将在客户端集成API时使用。

因此,使用GraphQL时,只需花费最少的精力即可获得文档齐全的API。这为第一次使用API的开发者提供了极大的透明度,使开发更加顺利和高效。

(5) 为变化而建

REST APIs提供同一API的多个版本是很常见的,这样就可以在不破坏现有功能的情况下进行更改。GraphQL鼓励使用另一种API修改方法:演进。

当需要进行突破性的改变时(例如,当重命名一个字段或改变它的类型时),你可以引入一个新的字段并废弃旧的字段,可能在以后当你确定它不再被使用时完全删除它。这意味着你仍然可以改变你的API,同时保持向后的兼容性和单一的API。

3. 采用GraphQL之前的注意事项

GraphQL是构建可扩展和灵活的API的优秀工具,但它不是万能的,当然也不是每个人都适合。

(1) 学习曲线

REST是一种简单而熟悉的API构建方法,而GraphQL则完全不同。开发人员和基础架构工程师都需要学习如何有效地开发和部署GraphQL API,这是一项需要适应的任务。

因此,时间紧凑的团队可能更适合使用他们已经熟悉的技术。

(编辑:三明站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读