在 JavaScript 中使用 GraphQL:实例

阅读时长 6 分钟读完

什么是 GraphQL?

GraphQL 是一种用于 API 的查询语言,由 Facebook 开发。它提供了一种更高效、更强大的方式来获取数据,可以让客户端指定需要的数据,从而避免了传统 REST API 中的一些常见问题,例如过度获取或未获取足够的数据。

GraphQL 的查询语言是一种类似于 JSON 的结构,可以描述数据的形状和关系。客户端可以编写一个查询,该查询指定所需的数据,然后将其发送到服务器。服务器将响应一个包含请求的数据的 JSON 对象,而不是传统 REST API 中的多个端点。

在 JavaScript 中使用 GraphQL

在 JavaScript 中,可以使用许多不同的库和工具来使用 GraphQL。本文将介绍使用 GraphQL.js 库和 GraphQL HTTP 中间件的基本示例。

安装和设置

首先,需要安装以下依赖项:

然后,可以创建一个简单的 Express 应用程序,并在其中设置 GraphQL 中间件:

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

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

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

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

这将创建一个简单的 GraphQL API,其中包含一个名为“hello”的查询,该查询返回字符串“Hello world!”。可以使用 GraphiQL 工具在浏览器中测试 API。

查询和变量

可以使用 GraphQL 查询语言来编写查询。例如,可以编写以下查询:

这将返回以下 JSON 响应:

可以使用变量来传递参数给查询。例如,可以编写以下查询:

然后可以在 GraphiQL 中设置变量值:

这将返回以下 JSON 响应:

模式和解析器

可以使用 GraphQL.js 库来创建更复杂的模式和解析器。例如,可以创建一个包含多个类型的模式:

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

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

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

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

这将创建一个包含名为“User”的类型的模式,该类型包含 id、name 和 email 字段。还创建了一个名为“Query”的类型,该类型包含一个名为“user”的字段,该字段接受一个 id 参数,并在解析器函数中返回相应的用户。

数据源

可以使用任何数据源来填充 GraphQL API。例如,可以使用 MongoDB 数据库:

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

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

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

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

这将创建一个名为“User”的类型,该类型包含 id、name 和 email 字段。还创建了一个名为“Query”的类型,该类型包含一个名为“user”的字段,该字段接受一个 id 参数,并在解析器函数中使用 MongoDB 数据库返回相应的用户。

结论

GraphQL 提供了一种更高效、更强大的方式来获取数据,并且可以在 JavaScript 中轻松使用。本文提供了一个简单的示例,展示如何在 JavaScript 中使用 GraphQL.js 库和 GraphQL HTTP 中间件来创建和测试 GraphQL API。

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

纠错
反馈