G

GraphQL 新手教程 - 简介

2025-06-07

GraphQL 新手教程 - 简介

我是GraphQL Editor的 Robert 。每隔几天我会发布一篇面向新手的 GraphQL 教程。这篇文章是对 GraphQL 的介绍。关注我获取更多内容!

GraphQL 从何而来?

GraphQL 于 2015 年由 Facebook 推出,作为 REST 的替代方案。当时,它并非只是一个实验——早在 2012 年,它就已在 Facebook 移动应用程序中投入生产。公开发布后,它便迅速流行起来,当时许多公司都在研究类似的解决方案。这项技术之所以开始受到关注,是因为它可以与许多其他语言兼容,并且有许多现成的库支持大多数流行的样式。根据 Stackshare 的数据,目前已有近 2000 家公司在使用它。早期采用者包括 Coursera、Github、ProductHunt、Yelp 和 Twitter。

什么是 GraphQL?

为了介绍 GraphQL,我将使用一个数据示例,并将其功能与 REST 进行比较。这个示例将向您展示为什么新技术更高效、更易于使用,以及创建它的动机是什么。

假设我们正在为一个有两个版本(网页版和移动版)的应用程序创建一个后端。系统的核心将包含足球运动员、他们效力的球队以及其他一些细节信息。移动版应用程序应该显示较少的信息。

网络 移动的
姓名
简历
团队(描述,年份)
团队(描述,年份)
姓名
球队(年份)
球队(年份)
-

因此,如果我们要基于 REST 创建 API,我们需要编写两个请求:

GET /player/{id}
{
  "id": „101”
  "name": „David Beckham”
  "bio": „…”
  „age”: „43”
}


GET /player/{id}/teams
{
  „Teams”: [{
    „id": „201”,
    „name”: „Real Madrid”,
    „description": „…”,
    „goals”: „…”,
    „matches”: „…”,
    „years”: „2003-2007”
  },
  ...
  ]
}
Enter fullscreen mode Exit fullscreen mode

通过查看响应,您可以发现在两种情况下我们获取的数据都超出了实际需要。由于移动数据和加载速度的限制,这在移动应用中至关重要。当然,我们可以通过编写不同的端点来解决这个问题,这些端点只获取我们需要的数据。另一种方法是实现 API,让我们可以自行选择需要的数据,例如 GET /player/{id}/teams?only=name。但在敏捷软件开发中,由于需求每周都在变化,这种解决方案很难维护。

与此相反,我们可以引入 GraphQL。

使用 GraphQL 的后端更加灵活,因为它只有一个端点。客户只需编写查询并指定具体需求,即可获取 JSON 格式的数据。在我们的足球示例中,我们可以为每个平台(Web 和移动)创建查询。

Web 应用程序:

query {
  player(id: "101") {
    name
    bio
    teams {
      title
      description
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

回复:

{
  "data": {
    "player": {
      "name": "David Beckham",
      "bio": "...",
      "teams": [{
        "title": "Real Madrid",
        "description": "..."
      }, ...]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

移动应用程序

query {
  player(id: "101") {
    name
    teams {
      title
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

回复:

{
  "data": {
    "player": {
      "name": "David Beckham",
      "teams": [{
        "title": "Real Madrid"
      }, ...]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

正如您所见,每次查询都只返回我们想要的结果。这就是 GraphQL 的强大之处——灵活性。您无需为不同的屏幕创建端点。不同的客户端可以根据需要使用同一个定义好的 schema。

请求更少。

传统的 REST 方法通常需要多次 GET 请求才能在一个屏幕上显示数据。这对于移动应用来说效率不高——它会降低应用速度,并且需要更多的互联网数据传输。GraphQL 允许用户只创建一个端点。得益于 Facebook 工程师引入的技术,客户端和服务器之间的通信得到了更好的优化。

查询语言

GraphQL 最重要的特性在于它与语言无关。它并非为与特定技术兼容而创建。它是一种查询语言,拥有自己的规则,适用于大多数流行的编程语言。互联网上有许多支持库,包括:C#/.NET、PHP、JavaScript、Java、Python、Ruby 等等。

概括

GraphQL 是一种查询语言和运行时,我们可以使用它来构建和公开 API,使其以强类型模式呈现,而无需数百个 REST 端点。客户端可以看到该模式,然后编写查询语句,发送查询请求,最终返回的正是他们请求的数据,仅此而已。GrapqhQL 的优势:

  • 减少移动应用程序的数据和请求,
  • 简单且可见的 API 结构
  • 可以与多种技术一起使用
  • 被 Twitter、Facebook、Github 等多家公司使用

如果您正在寻找最好的 graphql 教程,请查看这篇文章

文章来源:https://dev.to/iamrobert/graphql-tutorial-for-newbies---introduction-44d3
PREV
新手入门后端开发!简介:我们先来了解一下:1. 什么是后端?2. API 3. 服务器 4. 数据库 5. 后端开发人员 6. 后端语言
NEXT
JavaScript 十大面试问题 1 数据类型有哪些? 2 JavaScript 是区分大小写的语言吗? 3 如何创建对象? 4 如何在 JavaScript 中创建数组? 5 JavaScript 中的匿名函数和名称函数有什么区别? 6 运算符的类型如何工作? 7 如何使用 JavaScript 创建 Cookie? 8 双等运算符和三等运算符有什么区别? 9 浏览器存储有哪些不同类型? 10 null 和 undefined 有什么区别?