如何在 GraphQL 中使用图形化界面查询

GraphQL 是一种新型的 API 查询语言,它可以让你更加精确地查询你需要的数据,避免了 RESTful API 中出现的过度查询和返回过多数据的问题。GraphQL 的另一个优点就是可以使用图形化界面进行查询,这使得前端开发者可以更方便地使用 GraphQL 进行开发。

本文将介绍如何在 GraphQL 中使用图形化界面进行查询,包括如何设置 GraphQL 服务器和如何使用 GraphiQL 工具进行查询。

设置 GraphQL 服务器

首先,我们需要设置一个 GraphQL 服务器,这里我们使用 Node.js 和 Express 来搭建一个简单的 GraphQL 服务器。

安装依赖

首先,我们需要安装一些依赖,包括 expressgraphqlexpress-graphql

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

编写代码

接下来,我们编写一个简单的 GraphQL 服务器:

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

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

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

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

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

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

这个服务器只有一个 hello 查询,返回一个字符串 'Hello world!'

在这个服务器中,我们使用了 express-graphql 中的 graphqlHTTP 中间件来处理 GraphQL 请求。graphiql: true 表示启用图形化界面。

使用 GraphiQL 工具

GraphiQL 是一个 GraphQL 的图形化界面工具,它可以让前端开发者更方便地进行查询。

打开 GraphiQL

当我们访问 http://localhost:4000/graphql 时,会自动打开 GraphiQL 工具。

编写查询

在左侧的查询编辑器中,我们可以编写我们的查询语句,例如:

-
  -----
-

点击右侧的运行按钮,可以看到返回结果:

使用参数查询

在 GraphQL 中,我们可以使用参数进行查询,例如:

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

这个查询会返回 ID 为 1 的用户的姓名和年龄。

我们需要在 GraphQL schema 中定义这个查询:

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

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

然后在 resolvers 中实现这个查询:

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

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

这个 resolvers 中的 user 函数接收一个参数 id,返回 ID 为 id 的用户对象。

使用 Mutation

除了查询之外,我们还可以使用 Mutation 对数据进行修改。

例如,我们可以定义一个添加用户的 Mutation:

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

这个 Mutation 接收两个参数 nameage,返回添加的用户对象。

在 resolvers 中实现这个 Mutation:

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

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

这个 resolvers 中的 addUser 函数接收两个参数 nameage,返回添加的用户对象。

总结

在本文中,我们介绍了如何在 GraphQL 中使用图形化界面进行查询,包括如何设置 GraphQL 服务器和如何使用 GraphiQL 工具进行查询。我们还介绍了如何使用参数查询和 Mutation。希望本文对你学习 GraphQL 有所帮助。

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


猜你喜欢

  • 使用 ECMAScript 2020 中的可选链简化 JavaScript 代码

    在前端开发中,JavaScript 是一种非常常用的编程语言。但是,由于 JavaScript 的语法比较灵活,代码中经常会出现一些繁琐而又容易出错的代码。为了解决这个问题,ECMAScript 20...

    1 年前
  • 如何搭建 cAdvisor 监控 Docker 容器

    介绍 Docker 是一个开源的容器化平台,它可以帮助开发者构建、打包、部署和运行应用程序。但是,当我们在 Docker 中运行多个容器时,需要对它们进行监控和管理,以确保它们正常运行。

    1 年前
  • 基于 uni-app 开发的 PWA 应用实践

    前言 PWA(Progressive Web App)是一种新型的 Web 应用程序,它融合了 Web 应用和原生应用的优点,可以提供更加流畅的用户体验和更好的性能表现。

    1 年前
  • Enzyme 测试 React 组件时出现 “Target is not a DOM element” 错误的解决方式

    Enzyme 测试 React 组件时出现 “Target is not a DOM element” 错误的解决方式 在使用 React 进行前端开发时,我们通常会使用 Enzyme 进行组件的测试...

    1 年前
  • 快速掌握 Jest 的 Mock 功能,打造更有效的单元测试

    单元测试是前端开发中非常重要的一环,它可以帮助我们发现代码的问题,提高代码的质量。而 Jest 是目前前端领域使用最广泛的测试框架之一,它提供了丰富的测试工具和 API,其中 Mock 功能就是其中之...

    1 年前
  • MongoDB 和 Mongoose 基础入门教程

    简介 MongoDB 是一款基于分布式文件存储的 NoSQL 数据库,它的数据模型是面向文档的,可以存储 JSON 格式的数据。Mongoose 是 Node.js 的一个对象文档模型(ODM)库,它...

    1 年前
  • 使用 CSS Grid 和 Media Query 制作类似于 Pinterest 的信息流布局

    前言 在网页设计中,信息流布局是一种常见的布局方式,它可以将大量的信息展示在一个页面上,让用户可以方便地浏览和查看。而 Pinterest 就是一个非常典型的信息流布局网站,它以图片为主,让用户可以轻...

    1 年前
  • Deno 中如何使用 Sequelize 进行 ORM 操作?

    前言 在 Deno 1.0 发布后,越来越多的开发者开始使用 Deno 进行开发。Deno 的安全性、模块化和 TypeScript 支持等特点,让开发者可以更加便捷地进行开发。

    1 年前
  • 如何在 ES7 中使用 Promise.allSettled 方法并行执行多个请求

    在前端开发中,我们经常需要同时发起多个请求并等待它们全部完成后再进行下一步操作。ES7 中的 Promise.allSettled 方法可以帮助我们实现并行执行多个请求的功能。

    1 年前
  • Hapi 与 MongoDB 进行数据管理的最佳实践

    在现代的 Web 开发中,服务器端框架和数据库管理是非常重要的一部分。Hapi 是一个流行的 Node.js 服务器端框架,它提供了一些强大的工具和功能来帮助构建高效的 Web 应用程序。

    1 年前
  • Mongoose 中如何使用虚拟类型?

    在 Mongoose 中,虚拟类型是一种不会被存储到 MongoDB 数据库中的模型属性。虚拟类型可以用于计算属性或者格式化其他属性的值。本文将介绍如何在 Mongoose 中使用虚拟类型。

    1 年前
  • 如何使用 for-await-of 语句同时遍历多个流

    在 ECMAScript 2019 (ES10) 中,新增了一个 for-await-of 语句,它可以方便地遍历异步迭代器。在前端开发中,我们经常需要处理多个异步流,比如同时获取多个接口数据,或者处...

    1 年前
  • 使用动态导入 ES9 模块

    ES9(ECMAScript 2018)引入了动态导入模块的功能,这使得我们可以在运行时动态地加载模块。这是一个非常有用的功能,尤其是在前端开发中,因为它可以帮助我们减少页面加载时间,提高性能。

    1 年前
  • CSS Flexbox: 轻松实现网页布局

    在前端开发中,网页布局是一个非常重要的部分。CSS Flexbox 是一个强大的工具,可以帮助我们轻松实现各种网页布局,无需使用复杂的 CSS 技巧。本文将介绍 CSS Flexbox 的基本概念,详...

    1 年前
  • Tailwind CSS 下如何制作响应式瀑布流

    Tailwind CSS 是一个流行的前端框架,它可以帮助开发者快速构建现代化的用户界面。在 Tailwind CSS 中,我们可以使用一系列的类来定义样式,这使得我们可以轻松地创建响应式的设计。

    1 年前
  • Web Components 如何实现上传和下载文件

    Web Components 是一种新的 Web 技术,它允许我们创建自定义的 HTML 元素和组件,可以被复用和共享。在前端开发中,Web Components 可以帮助我们快速构建复杂的 UI 组...

    1 年前
  • 优化 Web 安全性:从服务器到网络

    Web 安全性一直是前端开发中不可忽视的问题。在今天的互联网环境中,网络攻击和恶意软件的威胁越来越多,因此优化 Web 安全性已经成为了一项重要的任务。本文将介绍从服务器到网络的优化 Web 安全性的...

    1 年前
  • Babel 编译报错 "You appear to be using a native ECMAScript module..." 的解决办法

    在使用 Babel 进行前端开发时,经常会遇到报错信息 "You appear to be using a native ECMAScript module...",该错误信息通常出现在使用 impo...

    1 年前
  • Webpack 对 ES6、ES7 语法的转换与支持

    前言 随着 ES6、ES7 的普及和使用,前端开发中对于这些新特性的支持和转换变得越来越重要。Webpack 作为一个前端打包工具,可以帮助我们自动地将 ES6、ES7 语法转换为浏览器可以识别的 E...

    1 年前
  • ES6 中的解构赋值在数组和对象上的应用及问题解决

    ES6 中的解构赋值是一种方便快捷的变量声明和赋值方式,可以在数组和对象上应用。本文将详细介绍解构赋值的语法和应用,以及解决解构赋值时可能遇到的问题。 数组解构赋值 数组解构赋值可以将一个数组中的元素...

    1 年前

相关推荐

    暂无文章