npm 包 @marcusstenbeck/graphql-yoga 使用教程

GraphQL 是一种由 Facebook 开发的 API 查询语言和运行时环境。GraphQL 在前后端分离架构中发挥了重要作用,并且对前端开发有很大的指导意义。在 Node.js 开发中,我们通常会使用 graphql-yoga 包来实现 GraphQL 服务。graphql-yoga 是一个基于 Express 平台的 GraphQL 服务器,它封装了 GraphQL 的一些常见问题,使我们可以快速构建和开发 GraphQL 服务。

在本文中,我们将介绍如何使用 npm 包 @marcusstenbeck/graphql-yoga 来创建一个 GraphQL 服务。

第一步:安装 npm 包 @marcusstenbeck/graphql-yoga

如果我们使用 npm 包管理器,则在项目根目录下打开终端并输入以下命令:

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

如果我们使用 yarn,则运行以下命令:

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

安装完成后,我们可以将它添加到我们的项目中,例如:

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

第二步:定义 Schema

在 GraphQL 中,schema 定义了哪些数据可以查询,以及如何查询这些数据。下面是一个简单的示例 schema:

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

在这个 schema 中,我们定义了一个 Query 类型,它有一个名为 hello 的字段,它返回一个字符串。如果我们希望将该 schema 应用于我们的应用程序,我们需要将它传递给 GraphQLServer 的 typeDefs 参数中,例如:

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

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

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

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

在这个示例中,我们也传递了一个空的 resolvers 对象,因为我们暂时没有需要解析的字段。

第三步:定义 Resolvers

resolver 告诉 GraphQL 如何解析我们的 schema 中的字段。下面是一个简单的 resolver 示例:

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

在这个示例中,我们定义了一个 hello 字段的 resolver,它返回字符串 "Hello World!"。我们需要将 resolvers 对象传递给 GraphQLServer 的 resolvers 参数:

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

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

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

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

在将 resolvers 添加到我们的应用程序后,我们可以使用 graphql-yoga 库的自动 GraphQL Playground 提供的 GraphQL IDE 来测试我们的 schema。可以在本地服务器上访问该端点 http://localhost:4000。

第四步:添加更多功能

我们可以通过添加更多类型和字段来扩展和增强我们的 GraphQL API。下面是一个示例,其中包含解析器中的更多内容:

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

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

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

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

在这个示例中,我们定义了四个查询类型和它们的 resolver 函数:hellorollDicerandomrollDie

我们也添加了两个参数来定义骰子的数量和数量的面数,返回骰子结果。

random 查询中,我们只是返回一个随机数。

rollDie 查询中,它返回一个 1 到 6 之间的随机整数。

值得注意的是,argument args 包含我们从请求接收到的参数。在我们的 rollDice 查询中,我们使用了 args.numDiceargs.numSides。在调用该查询时,我们必须传递两个参数。可以在 Playground 中通过输入以下查询来测试:

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

这个查询会返回两个骰子的结果。

结论

在这篇文章中,我们介绍了如何使用 npm 包 @marcusstenbeck/graphql-yoga 来创建一个 GraphQL 服务。我们已经学习了如何定义 schema 和 resolvers,以及如何添加更多的功能。这个库的易用性和功能强大,使得开发人员可以轻松地创建丰富的、可扩展的 GraphQL 服务。希望这篇文章能帮助你开始学习 GraphQL,并为你的下一个项目提供指导。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60065f90238a385564ab6f84


猜你喜欢

  • npm 包 redux-concise 使用教程

    Redux 是 React 中非常流行的状态管理工具,但是它的使用需要复杂的代码和配置。为了方便 Redux 的使用,出现了许多封装工具。其中一个被广泛使用的工具是 redux-concise。

    3 年前
  • npm 包 @nowzoo/ngx-strap 使用教程

    简介 @nowzoo/ngx-strap 是一个基于 Bootstrap 的 Angular UI 组件库,提供了一系列易于使用的组件和指令。在本文中,我们将为您介绍如何使用这个库来快速构建美观的 A...

    3 年前
  • npm 包 @swufexlm/js-hashcode 使用教程

    前言 哈希值(Hash)是一种将任意数据压缩成固定长度数据序列的方法。在前端开发中,哈希值经常被用于缓存、路由等方面。然而生成哈希值的算法并不是很容易,为此,我们需要一些工具来帮助我们快速生成哈希值。

    3 年前
  • npm 包 pip-services3-facade-node 使用教程

    在前端开发中,npm 包是一个非常重要的资源库。其中,pip-services3-facade-node 是一个基于 Node.js 的开源包,为使用 pip-services3 框架的开发者提供了一...

    3 年前
  • npm 包 pip-services5-aws-node 使用教程

    在前端开发中,使用第三方包能够大大提高开发效率,npm 是当前 JavaScript 生态圈中最流行的软件包管理器。而 pip-services5-aws-node 是一个集成 AWS 服务的 Nod...

    3 年前
  • npm 包 pip-services3-fluentd-node 使用教程

    简介 pip-services3-fluentd-node 是一个 Node.js 上的 npm 包,用于将应用程序日志发送到 Fluentd 日志收集器。该包提供了使用 Fluentd 提供高效的、...

    3 年前
  • ngx-easily-draggable 的使用教程

    什么是 ngx-easily-draggable ngx-easily-draggable 是一个 Angular 的 npm 包,它可以帮助我们实现页面元素的拖拽功能。

    3 年前
  • npm 包 cordova-plugin-deezer 使用教程

    如果你正在开发一款音乐应用程序,可能需要将 Deezer 的功能集成到您的应用中。在本文中,我们将介绍如何使用 npm 包 cordova-plugin-deezer,该包是 Deezer 的官方 C...

    3 年前
  • npm 包 cordova-plugin-adnotam-video-player 使用教程

    前言 随着移动设备的普及,视频已成为了网站和应用的重要组成部分。而在移动端开发中,有时我们需要使用 Cordova 插件来实现本地视频播放。本篇文章将为大家介绍一款常用的 Cordova 插件——co...

    3 年前
  • npm 包 weekdayjs 使用教程

    前言 在前端开发中,时间的处理是一个非常重要的问题,而在时间处理中,我们经常需要知道某个日期是星期几。在 JavaScript 中,虽然可以通过基本的日期对象 Date() 来获取日期信息,但是如果需...

    3 年前
  • npm 包 redis-json-memoize 使用教程

    redis-json-memoize 是一个用于 Redis 持久化缓存 JSON 数据的 npm 包。它允许开发者使用较小的内存空间来存储大量的 JSON 数据,同时还提供了自动 JSON 序列化和...

    3 年前
  • npm 包 ngx-endpoint 使用教程

    前端开发人员经常需要与后端 API 交互,以便向客户端提供数据。这通常涉及到执行 AJAX 请求并从响应中获取数据。为了方便起见,许多开发人员选择使用代码库和工具包来管理他们的 AJAX 请求,最流行...

    3 年前
  • npm 包 ejss 使用教程

    简介 ejs 是一种简单、高效、易用的 JavaScript 模板引擎,它可以帮助你以一种优雅、简洁的方式来生成 HTML 标记或任何其他格式的文本。ejs 的语法简单易懂,支持嵌入 JavaScri...

    3 年前
  • npm 包 @endemolshinegroup/cz-jira-smart-commit 使用教程

    前言 在团队协作开发中,我们经常需要对 JIRA 上的 task 进行操作,如更新状态、添加备注、关联代码等。为了方便我们管理任务,我们通常会在提交代码时将 commit message 写成一定格式...

    3 年前
  • npm 包 create-dart-app 使用教程

    在前端开发中,使用 npm 包可以极大地提高开发效率。本文将介绍一款名为 create-dart-app 的 npm 包,它可以让你快速生成 Dart Web 应用程序的基本骨架。

    3 年前
  • npm 包 dart-cli 使用教程

    介绍 Npm 包 dart-cli 是一个命令行工具,用于在命令行中执行 Dart 代码。Dart 是一种由 Google 开发的现代化、面向对象、静态类型的编程语言,常用于前端开发、服务器端开发和移...

    3 年前
  • npm 包 lerna-atlas 使用教程

    如果你是一个前端开发者,你可能曾经遇到过这样的情况,你需要同时维护多个相关的 npm 包,这时候你会发现,每次修改都需要手动更新所有相关的包,是一件非常麻烦的事情。

    3 年前
  • npm 包 rollup-alt 使用教程

    简介 npm 是前端工程化中不可或缺的一部分,而 rollup-alt 是一个非常优秀的打包工具,它可以帮助我们将多个 js 模块打包成一个文件,从而提高网站的性能和加载速度。

    3 年前
  • npm 包 @roopendra/react-big-calendar 使用教程

    简介 @roopendra/react-big-calendar 是一个 JavaScript 库,用于生成日历界面。它可以轻松地将日历组件集成到 React 应用程序中。

    3 年前
  • npm 包 template-projects 使用教程

    前言 在前端开发中,我们经常需要使用一些工具或框架来加速开发进程,提升开发效率。而 npm 作为前端领域最流行的包管理器,提供了海量的前端开发相关的包。其中,有一个叫做 template-projec...

    3 年前

相关推荐

    暂无文章