首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >开发实践|API新宠GraphQL浅谈

开发实践|API新宠GraphQL浅谈

原创
作者头像
六月暴雪飞梨花
发布2024-11-15 21:08:39
发布2024-11-15 21:08:39
5252
举报
好事发生

好事发生

这里推荐一篇实用的文章:《案例分享 | 大数据传输中的二进制加密方案》,作者:【叫我阿柒啊】。

这篇文章作者主要讲述在大数据时代,各种平台存储了大量的行为数据和用户信息,为了保证用户的隐私,数据安全作为数据治理的一部分,也被越来越多的人所提及。如何确保数据在传输过程中的机密性、成为了需要开发者需要考虑的难题。最简单的方式就是在传输之前,使用加密算法对数据进行加密。数据加密作为一种有效的保护手段,已经被广泛应用于各种数据传输场景中。

引言

互联网发展到今日,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

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

GraphQL API

代码语言:javascript
复制
{
  "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,希望能给更多开发者以帮助。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 好事发生
  • 引言
  • 了解GraphQL
  • GraphQL有哪些优点
  • GraphQL获取数据的方式
  • GraphQL通信性能
  • GraphQL与REST的差异点
    • 差异性
    • 相同点
    • 代码方式
  • GraphQL与SOAP异同
  • 使用场景
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档