npm 包 @graphql-tools/delegate 使用教程

阅读时长 5 分钟读完

前言

GraphQL 是一种用于 API 开发的查询语言。它与 REST API 的最大区别在于,REST 中的每个 API 通常对应一个 URL,而在 GraphQL 中,一个 API 只有一个 URL,但可以支持不同的查询和返回结果。GraphQL 可以帮助前端和后端开发人员更有效地协作。

@graphql-tools/delegate 是一个 npm 包,其主要目的是包装 GraphQL 服务器以便能够使用与服务器不同的字符表示,例如 JavaScript 对象或者其他后端 API。@graphql-tools/delegate 提供了一种方法,使得前端和后端开发人员可以利用 GraphQL 的优点,同时也能够轻松地访问和使用其它应用程序的 API。

本文将详细介绍如何使用 @graphql-tools/delegate 包来访问远程 GraphQL 服务器的 Schema。

安装

使用 npm 安装 @graphql-tools/delegate:

或者:

使用

定义远程端点

首先,需要定义远程 GraphQL API 端点。假设远程 API 的 URL 为 https://api.example.com/graphql。为了通过 @graphql-tools/delegate 访问该 API,需要定义 SchemaLink。

SchemaLink 是一个 Apollo Link。它依赖于以下 npm 包:

  • @apollo/client
  • apollo-link

首先,需要使用 imports 导入所需的包:

然后,需要创建一个 ApolloLink,将其作为参数传递给 SchemaLink。需要创建一个可执行的 Schema,并在其上添加假数据,以便在没有链接到远程服务器的情况下进行测试。

在本例中,API Schema 是通过将字符串传递给 makeExecutableSchema 函数创建的:

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

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

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

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

然后,将 ApolloLink 和 Schema 传递给 SchemaLink 的构造函数。此外,需要提供远程 API 端点的 URL:

使用 @graphql-tools/delegate

现在已经设置好了 SchemaLink。接下来,调用 delegateToSchema 函数,并传递源服务器的以下参数:

  • remoteSchema:提供远程 API 的 Schema。
  • operation:GraphQL 操作,这是一个输入对象。具有以下字段:
    • context:上下文对象,可附加到包装的 API 的执行上下文中。
    • requestString:GraphQL 查询字符串,将作为标准文本参数传递。
    • variableValues:变量是一种允许使用变量值的查询。变量由 query 和 mutation 定义,并以 $ 符号开头,后跟变量名。将变量值传递到标准 JSON 对象中。
    • rootValue:在 GraphQL 查询中使用的根值。
    • operationName:要执行的操作的名称,此处可以使用字符串值。
    • fieldName:根对象中调用的字段名称。

如下所示:

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

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

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

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

在此示例中,我们调用 delegateToSchema 函数,将其传递给 Schema Link,以便使用远程服务器的 Schema。在操作参数中,我们定义使用的查询,并在 variables 参数中传递变量。

总结

在本文中,我们详细介绍了使用 npm 包 @graphql-tools/delegate 的过程。通过使用 @graphql-tools/delegate,我们可以轻松地访问和使用远程 API,而无需了解其底层技术。籍由于这种方式,前端和后端开发人员可以更有效地协作,并通过使用 GraphQL 提高 API 开发的效率和可靠性。

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

纠错
反馈