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

前言

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


猜你喜欢

  • npm 包 multiprocess-map 使用教程

    简介 multiprocess-map 是一个 Node.js 的 npm 包,用于实现并发地执行大量的 CPU 密集型任务。采用多进程技术,提高计算机的利用率,加速执行速度,可以用于数据处理,图像处...

    4 年前
  • npm 包 mochallel 使用教程

    在前端开发中,测试是非常重要的一部分,而 mocha 是一个广泛使用的 JavaScript 测试框架。mochallel 是一个让测试并行化的组件,通过运行多个测试文件并行执行测试,从而提高测试效率...

    4 年前
  • npm 包 rollup-plugin-sucrase 使用教程

    简介 rollup-plugin-sucrase 是一个 Rollup 的插件,能够使用 Sucrase 进行项目代码的转换。Sucrase 是一个使用 Rust 语言编写的超快 JavaScript...

    4 年前
  • `assert-text` npm 包使用教程

    assert-text 是一个 Node.js 中常用的 NPM 包,它提供了一个简单的方式来测试字符串是否符合预期。本篇文章将介绍如何使用 assert-text 包进行前端开发中的测试。

    4 年前
  • npm 包 @goto-bus-stop/common-shake 使用教程

    前言 在项目中,我们时常会使用到一些公共的函数,而在项目中引用这些函数通常会造成代码冗余,降低代码的可维护性。此时,我们可以选择使用 npm 中的 @goto-bus-stop/common-shak...

    4 年前
  • npm 包 multisplice 使用教程

    在前端开发中,我们经常需要对数组进行增删改查等操作,而 JavaScript 中的数组方法是非常基础和常见的操作。然而,有时候我们需要在数组中进行多项删除,这时候就需要用到 npm 包 multisp...

    4 年前
  • npm 包 net-browserify-stub 使用教程

    在前端开发中,我们经常会用到 Node.js 的模块,但在浏览器端,我们无法直接使用 Node.js 的模块。为了解决这个问题,有一个很方便的工具:Browserify。

    4 年前
  • npm包 is-interactive 使用教程

    在前端开发中,我们经常需要判断当前运行的环境是否有控制台。比如当用户通过浏览器访问网页时,我们通常会输出一些调试信息到控制台,但是在没有控制台的情况下,这些信息就无法显示。

    4 年前
  • npm 包 @snyk/gemfile 使用教程

    前言 前端开发者们,你们是否有遇到过某个 npm 包因为在被使用的软件包中存在(潜在)的漏洞而使部署产生问题的情况呢?如果有,那么今天介绍的这个 npm 包——@snyk/gemfile 就非常适合你...

    4 年前
  • npm 包 @snyk/inquirer 使用教程

    介绍 @snky/inquirer 是一个基于 Node.js 的交互式命令行工具,方便地从用户那里收集输入。它是 inquirer.js 的一个扩展,能够通过调用 snyk.io 的 API 检查依...

    4 年前
  • npm 包 @snyk/ruby-semver 使用教程

    在前端开发中,我们经常需要处理版本号,而对于使用 Ruby 的开发者来说,可能会用到 Rubygems,这时就需要使用 snyk 的 @snyk/ruby-semver 包来处理 Rubygems 的...

    4 年前
  • npm 包 @snyk/cocoapods-lockfile-parser 使用教程

    简介 CocoaPods 是使用 Objective-C 和 Swift 进行 iOS 应用程序开发的最流行的依赖管理器。当 CocoaPods 安装这些依赖项时,它将生成一个名为 Podfile.l...

    4 年前
  • npm 包 @snyk/snyk-cocoapods-plugin 使用教程

    在 iOS 应用开发中,CocoaPods 是一个非常流行的依赖管理工具。它可以方便的管理应用的各种依赖库,同时也提供了一些方便的功能,比如快速安装、更新以及处理依赖包冲突等等。

    4 年前
  • npm 包 @types/needle 使用教程

    在前端开发中,所涉及的技术栈极为丰富,其中 NPM 包管理工具则是必不可少的一种。针对前端开发中的 RESTful API 服务进行请求,一个好的请求库也是必不可少的,而 needle 就是一个非常好...

    4 年前
  • npm包@juliangruber/tap-finished的使用教程

    引言 在前端开发过程中,我们常常需要对 JavaScript 代码进行测试以确保其可靠性和稳定性。在这个过程中,往往会使用到 tap 测试框架,因为它具有灵活、简单和易于使用等优点。

    4 年前
  • npm 包 pubsub 使用教程

    在前端开发中,通常我们需要实现不同组件之间的通讯功能。对于这种情况,pubsub 是一个非常实用的解决方案。本文将介绍 npm 包 pubsub 的使用教程,并提供详细的示例代码。

    4 年前
  • npm 包 parse-env-string 使用教程

    在前端开发工作中,环境变量的管理是非常重要的,我们需要将开发环境(dev)、测试环境(test)、生产环境(prod)等不同环境下的变量值分别配置,并在不同环境中正确获取对应的变量值。

    4 年前
  • npm 包 w3c-xmlserializer 使用教程

    前言 w3c-xmlserializer 是一个在 Node.js 和浏览器中序列化 XML 的 npm 包,它可以将文档对象模型 (DOM) 转换为字符串表示形式,可以用于从 DOM 中创建 XML...

    4 年前
  • npm 包 Component-ls 使用教程

    npm 是 Node.js 的包管理器,在前端开发中非常重要。本文将介绍一个叫做 component-ls 的 npm 包,具体使用方法以及总结一些学习和指导意义。

    4 年前
  • npm 包 @lerna/add 使用教程

    什么是 @lerna/add? @lerna/add 是一个 npm 包,用于添加依赖项到 Lerna 项目的 packages 中。Lerna 是一个管理跨多个包的 JavaScript 代码库的工...

    4 年前

相关推荐

    暂无文章