GraphQL 概念入门

GraphQL 概念入门

Restful is Great! But GraphQL is Better. – My Humble Opinion.

GraphQL will do to REST what JSON did to XML. – Samer Buna from Quora

GraphQL 作为 Facebook 的前端三架马车之一(另外两架是 Relay 和 React, 三者可以无缝结合),提出也有一段时间了,但真正用过的人却出奇的少,
截止到 2018 年底,根据 Stateofjs 的数据看,
虽然只有 1/5 的开发人员用过,但却有高达 62.5% 的人表示听过并想试试😂 果然咸鱼才是主流呀;
接下来我会就 GraphQL 的前后端应用出个系列文章介绍 GraphQL 及其使用感受,顺便填坑。

本系列将以 Python + Django + Graphene 作为后端服务端。Apollo 作为前端客户端。

1. 什么是 GraphQL

官方是这么说的:

GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。
GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,
也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。

我总结一下:

首先 GraphQL 它是一种跟 Restful 标准类似的查询语言。它们的功能层级类似(如下图),但从实际应用、理念上说的话,它们是完全不一样的两种形态。

在这里插入图片描述

Restful 主张的是 “一切数据皆视为资源”,
在理想情况下:不同的请求内容对应着一个唯一的 ID. 不同的数据动作对应到不同的 HTTP 方法上。

GraphQL 主张的是 “一切数据皆视为数据(树状的)”,
不同的请求内容都会对应到同一个 HTTP 地址,也会对应到同一个 HTTP 方法(POST)。
不同的动作由操作符决定。它的总体体验会更像是一个 SQL Shell, 你需要什么就请求什么,你不需要的内容它也不会硬塞给你。

与 Restful 类似,他们都只是个标准,不同产品它们的具体实现也是有所出入的,没有完全实现所有特性也是正常的。
但主要的功能及特性是在所有实现中都有的。另外两者的不同语言支持基本差不多,常见语言都能有对应的实现。

下面我会就两者的差异进行相对详细的比较,
由于 Restful 算是个比较通用的标准了,下面我不会详细介绍 Restful 的具体内容,
如果你不熟悉 Restful 标准的话最好先了解一下后再继续,以便更好地理解。

2. GraphQL 与 Restful 的数据操作对比

2.1 查询

Restful 主张一切数据皆视为资源,这意味着不同的数据你会需要多次请求,
比如一个像我这样的 SPA 类型的个人博客,你大概会在进入主页时请求这些内容(纯假设,非实际情况):

// 一些配置类信息:比如配置项、站点标题等
https://example.com/config/

// 侧边的标签栏
https://example.com/tags/

// 侧边的归档栏
https://example.com/archives/

// 公告信息栏
https://example.com/billboard/

// 文章的列表
https://example.com/articles/

像这样一个单页博客一进主页时必然要请求的信息就要这么多,想象一下如果是一个高并发的、内容结构复杂的网站那请求数量会有多大。

但这些在 GraphQL 中的话,你只需要请求一次,比如:

query {
  config: {
    key,
    value,
  }

  tags: {
    name,
  }

  archives: {
    name,
  }

  billboard

  articles {
    id,
    name,
    description,
    tags: {
      name,
    },
  }
}

然后,接口的返回内容会类似这样:

data: {
   
  config: 
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GraphQL是一种用于构建API的查询语言和运行时的开发工具。相比于传统的REST架构,GraphQL通过提供更清晰、更高效的数据查询和响应机制,极大地提升了开发人员的效率和灵活性。 学习GraphQL需要掌握以下几个方面。首先,要了解GraphQL的核心概念,比如查询、变异、订阅等,以及它们在数据查询和响应过程中的作用。其次,需要学会使用GraphQL的查询语句来获取、筛选和组合数据,包括字段选择、参数传递和嵌套查询等。此外,还需要熟悉GraphQL Schema语言,它定义了可用字段、类型和操作,以及它们之间的关系。掌握Schema语言对于构建和维护GraphQL API非常重要。 在学习过程中,可以使用一些流行的GraphQL库和框架,如Apollo和Relay,它们提供了丰富的工具和功能来简化GraphQL开发。此外,阅读官方的GraphQL规范和文档,参与社区讨论和实践,也是学习的重要途径。 学会GraphQL后,你可以享受到许多好处。首先,GraphQL提供了更高效、精确的数据查询和响应机制,减少了网络传输的数据量,提高了前端性能。其次,GraphQL允许客户端指定需要的数据,避免了传统REST API中的过度获取或不足获取数据的问题,提升了应用的可扩展性和灵活性。此外,GraphQL还支持实时数据订阅,可以用于构建实时聊天、消息推送等功能。 总而言之,学习GraphQL是现代Web开发中的重要一环,它将大大提升开发人员的效率和应用的功能性。通过掌握核心概念、查询语句和Schema语言,结合流行的库和框架,可以更好地应用GraphQL构建高性能、可扩展的API。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值