使用 GraphQL 查询

讲师:Vue Msatery Team

口袋资源独家Vue Mastery付费课程独家中英文字幕配套资料齐全!

不到1/10的价格,即可享受同样的高品质课程,且可以完全拥有,随时随地都可以任意观看和分享。

GraphQL 简介

使用传统 REST API 存在一个问题:对于给定的端点,我们总是会得到相同的服务器响应。

这种缺乏灵活性会导致两个同样恼人的问题:

  1. 过度获取数据——当我们得到大量响应但只需要其中的一小部分时。
  2. Under-fetching——当我们执行第一次调用只是为了接收我们需要的一小部分时。这可能会导致链接 API 调用并获取更多不必要的数据以试图获得我们需要的数据。

如果我们可以根据我们提出的请求来调整我们得到的响应,并在我们需要的时候只获取我们需要的东西,那不是很好吗?幸运的是,这可以通过 GraphQL 实现,这是一种构建和查询 API 的现代方法。

在 Vue Mastery 的 GraphQL 课程中,我们将一起创建一个 Vue + GraphQL 应用程序,以获得使用这个强大的现代工具的信心。


了解其独特优势

简单来说,GraphQL 是一种描述如何请求数据的语法,一般用于从服务器加载数据。

GraphQL 的核心特性和最大优势之一是您只获得您请求的数据。REST API不同,API 调用响应的形状是在服务器上定义的,对于 GraphQL,这是在客户端完成的。这使我们可以发出单个请求来获取所有必需的信息,而不是进行后续的 REST API 调用。

为了更好地理解这种差异,让我们看一个示例,我们将比较使用 REST 和 GraphQL API 从 GitHub 获取数据。


使用 REST 获取

想象一下,我们想要获取某个用户的存储库列表,并检查这些存储库中使用了哪些编程语言。

使用 REST API,首先我们将调用 for /users/:username/repos,这将为我们提供一个存储库列表:

// fetch with ==> /users/NataliaTepluhina/repos
// and get this response:

[
  {
    "id": 328931302,
    "name": "api-wheel-demo",
    "full_name": "NataliaTepluhina/api-wheel-demo",
    "languages_url": "https://api.github.com/repos/NataliaTepluhina/api-wheel-demo/languages",,
    ...
  },
  {
    "id": 243311967,
    "name": "apollo-presentation",
    "full_name": "NataliaTepluhina/apollo-presentation",
    "languages_url": "https://api.github.com/repos/NataliaTepluhina/apollo-presentation/languages",
    ...
  }
]

(请注意,我没有显示整个 repo 对象,因为它们是具有 60 多个字段的巨大对象,其中一些是嵌套的。)

但是,如果我们想知道每个 repo 中使用的编程语言怎么办?查看数据,我们只有用于languages_url检索语言的链接。这意味着我们需要采取另一个步骤并遍历存储库列表,为每个存储库获取语言,使用languages_url.

// fetch with ==> /repos/NataliaTepluhina/api-wheel-demo/languages
// and get this response:

{
  "Vue": 1339,
  "JavaScript": 1167,
  "HTML": 611
}

// fetch with ==> /repos/NataliaTepluhina/apollo-presentation/languages
// and get this response:
{
  "Vue": 3925,
  "JavaScript": 2887,
  "HTML": 605
}

使用GraphQL获取

那么这与 GraphQL 有何不同?使用它,我们发送一个查询字符串,指定我们要获取的字段。该字符串在服务器上进行解释,将 JSON 返回给客户端。

(我们在图片中看到的是GraphiQL— 一个可以让您检查 GraphQL API 的浏览器。)

如您所见,仅通过一个请求,我们就获取了所需的一切,而没有任何额外的、过度获取的数据!

GraphQL 的另一个好处是它使用强类型系统来描述您可以从 GraphQL 服务器获取的所有可能数据。这组类型称为GraphQL 模式,可以在 GraphiQL 之类的 UI 中进行检查。强类型使 GraphQL 不易出错,可以在编译时进行验证,并且可以使用 IDE 工具进行验证和自动完成。


对课程有什么期望

既然我们开始了解 GraphQL 如何提供查询数据的独特能力,那么我们如何在前端使用它呢?我们可以使用 POST 请求,但使用 GraphQL 客户端之一更方便。

在本课程中,我们将专注于Apollo Client及其 Vue 集成:VueApollo。我们将学习如何在服务器上获取和更改数据,如何使用实时订阅,甚至学习如何用内置的 Apollo Client 缓存替换 Vuex 等本地状态管理工具。

要充分利用本课程,您需要对 Vue 本身和 Vue CLI 有扎实的了解,并对 Composition API 有基本的了解。因此,如果您准备好开始自信地将 GraphQL 插入您的 Vue 应用程序,我们将在下一课见。

发表回复

后才能评论

  • 每一个课程页面,都有演示地址选项,点击链接可以跳转到课程发布网站查看详细课程列表。
  • 绝大部分课程都有试看内容,可以先点击试看,再决定是否购买。
  • 本站课程均存储在阿里云盘或百度网盘中,由于阿里云盘对分享的文件类型有限制,所以课程资料和字幕会存储到蓝奏云盘中。
  • 阿里云盘和蓝奏云盘都是不限速下载的,你既可以选择在阿里云盘中在线学习,也可以选择下载到本地学习。
  • 课程下载到本地可以挂载中英文双字幕,请点击查看Potplayer挂载中英文双字幕教程
  • 本站所有课程,均提供mp4格式视频文件,中英文双字幕,配套资料齐全,不加密。
  • 每一个课程右侧下载面板中,都会有清晰度标识,大部分都是1080P或者720P,还有少数是超高清的。
  • 本站课程购买之后,均可以免费更新,所有课程,皆配有中文字幕。
  • 请注意,课程的中文字幕是根据英文字幕用谷歌翻译生成的,本非人工翻译。谷歌翻译准确度尚可,学习观看,没有问题。
  • 由于数字资源具有可复制性,一旦购买,不接受退款要求,请在购买之前,认真了解课程内容,确定是否需要。
  • 当然,如果有特殊情况,可以查看网站底部联系方式,联系站长说明问题,我会为你妥善处理。
  • 赞助本站VIP会员,可以免费下载所有课程,详情请查看VIP介绍