使用 GraphQL 和 MySQL 构建高可用性 Web 应用

阅读时长 8 分钟读完

引言

随着 Web 应用的不断发展,前端技术也随之不断进步。在过去,前端应用主要是通过 RESTful API 与后端进行通信,但是 RESTful API 存在一些缺点,例如需要多次请求才能获取到完整的数据、无法限制返回的数据等。GraphQL 应运而生,它可以解决这些问题并提供更好的 API 设计方式。

MySQL 是一种流行的关系型数据库,它使用 SQL 语言进行数据操作,被广泛应用于 Web 应用的后端。在本文中,我们将介绍如何使用 GraphQL 和 MySQL 构建高可用性的 Web 应用。

GraphQL 简介

GraphQL 是一种用于 API 设计的查询语言和运行时环境。它的主要设计目标是提供一种更加高效、强大和灵活的 API 设计方式。GraphQL 具有以下特点:

  • 可以精确地指定需要返回的数据,避免了 RESTful API 中需要多次请求才能获取到完整的数据的问题。
  • 支持类型系统,可以定义数据类型和接口,使得 API 设计更加清晰和易于维护。
  • 支持多种数据源,可以方便地集成多种数据源,例如 MySQL、MongoDB 等。

GraphQL 的查询语言非常简洁,例如下面的查询:

这个查询会返回 ID 为 123 的用户的姓名和邮箱。在 RESTful API 中,可能需要多次请求才能获取到这些数据。

MySQL 简介

MySQL 是一种流行的关系型数据库,它使用 SQL 语言进行数据操作。MySQL 具有以下特点:

  • 支持 ACID 事务,保证数据的一致性和完整性。
  • 支持多种数据类型和索引,可以根据不同的需求进行优化。
  • 支持多种存储引擎,例如 InnoDB、MyISAM 等。

MySQL 的数据操作非常灵活,例如下面的 SQL 语句:

这个 SQL 语句会返回 ID 为 123 的用户的姓名和邮箱。

使用 GraphQL 和 MySQL 构建 Web 应用

下面我们将介绍如何使用 GraphQL 和 MySQL 构建高可用性的 Web 应用。我们将使用 Node.js 和 GraphQL Yoga 作为后端,使用 React 和 Apollo Client 作为前端。

后端

首先,我们需要安装 Node.js 和 MySQL,并创建一个数据库和一个表。假设我们创建了一个名为 webapp 的数据库,其中包含一个名为 users 的表,该表包含 idnameemail 三个字段。

接下来,我们可以使用 GraphQL Yoga 创建一个 GraphQL 服务器。GraphQL Yoga 是一个基于 Express 和 GraphQL 的库,提供了易于使用的 API,并且支持实时数据传输。

首先,我们需要安装 GraphQL Yoga:

然后,我们可以创建一个 index.js 文件,该文件包含以下代码:

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

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

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

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

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

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

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

这个文件定义了一个 user 查询,该查询接受一个 id 参数,并返回 ID 为该参数的用户的姓名和邮箱。我们使用 mysql 模块连接到 MySQL 数据库,并在 user 查询中执行 SQL 语句。

接下来,我们可以运行该服务器:

现在,我们可以使用 GraphQL Playground 工具测试该服务器。在浏览器中打开 http://localhost:4000,即可打开 GraphQL Playground。

在 GraphQL Playground 中,我们可以输入以下查询:

这个查询会返回 ID 为 1 的用户的姓名和邮箱。如果一切正常,服务器会返回以下结果:

前端

现在,我们已经成功地创建了一个 GraphQL 服务器,并且可以通过查询获取用户数据。接下来,我们将创建一个前端应用,使用 Apollo Client 从服务器获取数据。

首先,我们需要安装 React 和 Apollo Client:

然后,我们可以创建一个 index.js 文件,该文件包含以下代码:

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

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

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

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

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

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

这个文件定义了一个 GET_USER 查询,该查询接受一个 id 参数,并返回 ID 为该参数的用户的姓名和邮箱。我们使用 ApolloProviderQuery 组件从 GraphQL 服务器获取数据,并使用 gql 模板字符串定义查询。

接下来,我们可以运行该前端应用:

现在,我们可以在浏览器中打开 http://localhost:3000,即可看到该前端应用。

该应用会自动从 GraphQL 服务器获取 ID 为 1 的用户的姓名和邮箱,并显示在页面上。如果一切正常,页面会显示以下内容:

总结

在本文中,我们介绍了如何使用 GraphQL 和 MySQL 构建高可用性的 Web 应用。我们使用 Node.js 和 GraphQL Yoga 作为后端,使用 React 和 Apollo Client 作为前端。通过这个示例,我们可以了解到 GraphQL 和 MySQL 的基本使用方法,并了解到如何将它们集成到 Web 应用中。希望本文对您有帮助。

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

纠错
反馈