开发实践|API新宠GraphQL浅谈

📫 作者简介:「六月暴雪飞梨花」,专注于研究Java,就职于科技型公司后端工程师
🏆 近期荣誉:华为云云享专家、阿里云专家博主、腾讯云优秀创作者、腾讯云TDP-KOL、ACDU成员、墨天轮技术专家博主
🔥 三连支持:欢迎 ❤️关注、👍点赞、👉收藏三连,支持一下博主~

引言

互联网发展到今日,HTTP API作为前端和后端通信的桥梁,变得越来越重要。在一众API架构风格中,GraphQL因自己的优势也越来越受很多人关注。本文将从数据获取方式、通信性能、灵活性以及使用场景上,浅谈下GraphQL。

了解GraphQL

如果你需要了解更多关于GraphQL的信息,可以移步官方网站来学习和获取更多的知识,GraphQL当前最新的版本为v16,v17还是测试阶段,不过也很快同大家见面。
官网:https://graphql.org/
GraphQL中文网:https://graphql.nodejs.cn/
Github:https://github.com/graphql/graphql-js
GraphQL Editor:https://graphqleditor.com/graphql/
在这里插入图片描述

GraphQL有哪些优点

GraphQL 旨在处理此问题。 在发出信息请求时,您可以确定希望获得的信息。 此类结果是通过将信息定义能力移动到客户端来完成的,而在 REST 中,信息在工作人员方面具有特征。 因此,在 REST API 设计中,工作人员表示要返回哪些数据,而在 GraphQL API 中,工作人员声明可访问的信息,并且客户指示应该替换哪些数据。总结优点如下:
● 适合复杂的系统和微服务
● 它通过单个 API 调用获取数据
● 根据需求定制请求
● 验证和键入开箱即用
● 自动生成 API 文档
● 无需版本控制即可进行 API 演化
● 代码共享
顺便也说下缺点,
● 始终返回 200 的 HTTP 状态代码,即过度查询是否有效。
● 缺少隐式存储支持。

GraphQL获取数据的方式

GraphQL是一种用于API的查询语言和运行时环境,它允许客户端精确地获取需要的数据。GraphQL通过定义一个全局唯一的Schema,描述了后端所有可能的数据结构。客户端通过编写GraphQL查询语句,告诉服务器需要哪些数据,服务器根据查询语句返回精确的数据。这种方式的优点是减少了不必要的HTTP请求,降低了网络带宽消耗;缺点是需要学习和掌握GraphQL查询语句的编写,GraphQL比较年轻,相对于我们使用REST风格的方式,例如HTTP方法(GET、POST、PUT、DELETE等)对实现客户端对资源的增删改查需要更多的理解。

GraphQL通信性能

GraphQL通过减少网络传输的数据量来提升性能,因为它只返回客户端需要的数据。此外,GraphQL还支持懒加载和增量更新,这意味着客户端可以在需要时获取更多数据,而不是一次性加载所有数据。这个在下一篇将专注测试通信性能。
GraphQL与REST的差异点
REST API 是应用程序通信的架构概念。与之相对的 GraphQL 则是一种规范、一种 API 查询语言和一组工具。GraphQL 使用 HTTP 在单个端点上运行。此外,REST 开发更侧重于创建新的 API。同时,GraphQL 的重点一直是 API 的性能和灵活性。

差异性

对比项GraphQL API风格REST API风格
定义GraphQL 是一种查询语言、架构样式以及一组用于创建和操作 API 的工具。REST 是一组规则,用于定义客户端和服务器之间的结构化数据交换
适用场景大型、复杂和相互关联的数据来源。资源定义明确的简单数据来源。
返回数据格式客户端定义的灵活结构返回数据。服务器定义的固定结构返回数据。
渲染容错无效的请求通常会被架构结构拒绝。这会导致自动生成的错误消息。客户端必须检查返回的数据是否有效。

相同点

● 两者都是无状态的,因此服务器不会在请求之间保存响应历史记录。
● 两者都使用客户端-服务器模型,因此来自单个客户端的请求会导致来自单个服务器的回复。
● 两者都基于 HTTP,因为 HTTP 是底层通信协议。

代码方式

例如获取本篇博文后的信息可以如下方式
REST API

[
  {
    "id": 1,
    "title": "开发实践|API新宠GraphQL浅谈",
    "content": "本文主要了解下什么是GraphQL,从数据获取方式、通信性能、灵活性以及使用场景上,浅谈下GraphQL,希望能给更多开发者以帮助。"
  }
]

GraphQL API

{
  "data": {
    "posts": [{
        "id": "1",
        "title": "开发实践|API新宠GraphQL浅谈",
        "content": "本文主要了解下什么是GraphQL,从数据获取方式、通信性能、灵活性以及使用场景上,浅谈下GraphQL,希望能给更多开发者以帮助。"
      }]
  }
}

GraphQL与SOAP异同

REST 在 API 排列设计方面是一种创新成就,它还是让工程师需要更多。 当 Facebook 人员开始搜索从工作人员那里获取信息的替代方法时,他们试图确定当前 API 约定中获取不足或过度获取的问题。 在 REST 或 SOAP 中,请求某些信息恢复与它相关的所有属性;即使是那些客户端不需要的。

使用场景

GraphQL则更适用于数据复杂、查询需求多变的场景,如社交媒体、电商等。在这些场景中,GraphQL可以帮助开发者更高效地获取和处理数据,提升用户体验。RESTful API适用于资源导向的场景,如CRUD操作、文件上传下载等。它简单易用,易于理解和实现,适用于大多数Web应用。所以如何选择API架构风格,则一目了然。
在这里插入图片描述

总结

本文主要了解下什么是GraphQL,从数据获取方式、通信性能、灵活性以及使用场景上,浅谈下GraphQL,希望能给更多开发者以帮助。


欢迎关注博主 「六月暴雪飞梨花」 或加入【六月暴雪飞梨花社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六月暴雪飞梨花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值