GraphQL 101:搭建 GraphQL 的基本流程和测试

阅读时长 6 分钟读完

简介

GraphQL 是一种用于 API 的查询语言和运行时环境,由 Facebook 于 2012 年开发并在 2015 年开源。相较于 RESTful API,GraphQL 有更好的灵活性和可扩展性。本篇文章将介绍 GraphQL 的基本概念以及如何搭建一个 GraphQL 服务器并进行测试。

GraphQL 介绍

GraphQL 的核心概念是:定义应用程序的数据模型、定义数据的类型、定义数据的关系,然后用 GraphQL 的 API 来查询和修改数据。GraphQL 的 API 由客户端指定需要获取的数据,使得客户端可以精确地获取所需数据,而不需要访问多个 API 以获取完整数据集。

GraphQL 的特征和优势:

  1. 声明性:客户端请求数据的方式非常声明性,不同于其他 API 通常使用 编程语言 调用HTTP方法的方式。
  2. 类型系统:定义了客户请求的数据类型和返回的数据类型。
  3. 强大的工具链:包含开发工具,便于在本地开发和维护现有代码库。
  4. 流式执行:支持运行时错误,避免了反复查询数据的情况发生。
  5. 多语言支持:支持各种编程语言,如 JavaScript,Java,Python,Ruby 等。

搭建 GraphQL 服务器

Step 1:安装必要的依赖

使用 npm 或者 yarn 安装 graphql, express, graphql-express

Step 2:构建 GraphQL Schema

GraphQL Schema 定义了各种类型和根类型,描述了 GraphQL API 中提供的数据和操作。GraphQL Schema 使用 GraphQL SDL(Schema Definition Language)来定义,可以使用 buildSchema 方法将 GraphQL SDL 转换为可执行的 GraphQLSchema 对象。

这里定义了一个名为 Query 的根类型,包含了一个名为 hello 的字段,这个字段的类型为字符串。

Step 3:定义 Resolver

Resolver 是用于执行 GraphQL 操作的函数,用于返回 Query 或 Mutation 所定义的类型的实现,Resolver 中的函数接收参数并返回数据。

实现了一个 hello 函数,返回字符串 Hello,world!

Step 4:搭建 Express 应用

我们定义了一个使用 GraphQL 的 Express 应用,并将其设置为监听 3000 端口。当发出请求时,路由 /graphql 将使用 graphqlExpress 处理 GraphQL 查询,并将其发送到定义的 schema 和 rootResolver 中。

测试 GraphQL 服务器

使用 GraphiQL 测试

GraphiQL 是一款用于调试 GraphQL 的开发者工具,它可以帮助你编写查询和测试 API 。

  1. 打开浏览器,输入 http://localhost:3000/graphql。
  2. 在 GraphiQL 界面上,直接输入下面这段代码:

我们定义了一个名为 hello 的函数,返回了一个字符串 “Hello, world!”。运行上述操作,GraphiQL 将返回查询结果以及所用时间。

使用 Jest 测试框架测试

-- -------------------- ---- -------
----- - ------- - - -------------------

---------------------- -- -- -----------------------------
----- - ------ - - ---------------------
----- - ------------ - - -----------------------

------------------ -- -- -
  ------------- -------- -------- --- ----- ------- ----- -- -- -
    ----- ----- - -
      ----- -
        -----
      -
    --

    ----- -------- - ----- --------------- ------ --------------

    --------------------------
      ----- - ------ ------- ------- -
    ---
  ---
---
展开代码

使用 Jest 测试框架可以进行单元测试。首先我们在 __mocks__ 目录下定义了 schema.js 模块的模拟版本,以便测试中使用。通过调用 graphql() 函数并传入 schema、query 和 resolver,我们可以对在前文中定义的返回“Hello,world!”的 hello() 函数进行测试。

结语

本篇文章介绍了 GraphQL 的基本概念和特性,并提供了一个 GraphQL 服务器的搭建和测试流程。通过这个概念和实践的操作,我们更深入地了解了 GraphQL。GraphQL 语言和 GraphQL API 使得客户端能够请求其所需的精确数据,而不是根据 RESTful API 的资源移动方式来获取全部的数据。因此 GraphQL 在前端开发中有非常重要的作用,我们可以尝试在实践中应用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d79864a941bf7134d97f56

纠错
反馈

纠错反馈