使用 Express.js 和 GraphQL 构建 API

前言

Web 开发的核心就是构建 API,API 构建的质量决定了更高层级的应用质量。随着框架和技术的发展,很多新的构建方式和协议已经涌现出来。

在本文中,我们将使用 Express.js 和 GraphQL 构建 API。Express.js 是一个流行的 Node.js Web 框架,而 GraphQL 则是一个用于 API 的查询语言和运行时环境。它们可以帮助我们构建更快、更简单、更可靠的 API。

Express.js

Express.js 是一个基于 Node.js 平台的 Web 框架。它提供了一个简单而灵活的 API,让我们能够快速地构建 Web 应用程序。

以下是一个使用 Express.js 构建简单 API 的示例:

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

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

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

在上面的代码中,我们使用 express 模块创建了一个 Express 应用程序。我们在根路径上定义了一个 GET 路由,当请求根路径时,该路由将发送一个 “Hello World!” 的响应。最后,我们将应用程序的端口设置为 3000 并监听该端口。

使用这种方式,我们可以快速地构建一个功能简单的 API。但是在开发更为复杂的应用程序时,我们需要更多的功能。

Express 提供了更多高级功能,包括:

  • Middleware
  • 路由
  • 静态文件服务
  • 模板引擎

在这篇文章中,我们将重点介绍如何使用 Express 和 GraphQL 构建 API。

GraphQL

GraphQL 是一个用于 API 的查询语言和运行时环境。通过 GraphQL,我们可以使用一种声明性语言来定义查询,与数据源通信,并返回所需的数据。

GraphQL 的一个主要特点是让客户端可以查询精确的数据,并且只返回客户端所需的数据。这可以有效减轻服务器的负担和带宽压力。

以下是一个使用 GraphQL 构建 API 的示例:

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

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

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

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

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

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

在上面的代码中,我们使用 graphqlHTTP 中间件将 GraphQL 与 Express 应用程序集成在一起。我们定义了一个 Query 类型,该类型有一个名为 hello 的字段。我们还提供了一个名为 root 的解析器,用于实现 hello 字段的逻辑。

最后,我们将 GraphQL 中间件添加到 Express 应用程序中,将其路由到 /graphql 路径,并启用 GraphiQL 调试工具。

在 Express 中使用 GraphQL

现在我们已经了解了如何使用 Express 和 GraphQL 分别构建一个简单的 API,接下来我们将介绍如何将它们结合起来使用。

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

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

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

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

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

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

在上面的代码中,我们在定义 Query 类型中添加了一个 greeting 字段,该字段带有一个 name 参数。我们还在 root 解析器中实现了一个 greeting 函数,用于根据传递的 name 参数返回一个字符串。

我们还需要重点关注一下 graphqlHTTP 中间件的配置。我们传递了一个 schema 对象和一个 root 对象。在 graphiql 选项中设置为 true,表示启用 GraphiQL 调试工具。

现在我们可以访问 http://localhost:3000/graphql,使用 GraphiQL 发送请求并接收响应了,下面是一个示例:

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

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

GraphiQL 将发送这两个查询并在右侧的“响应”窗格中返回结果。

结论

Express.js 和 GraphQL 都是用于构建 Web 应用程序的常用工具。通过将它们相互结合使用,我们可以轻松地构建高效和灵活的 API。

在本文中,我们提供了一个简单的示例,演示了如何在 Express 中使用 GraphQL。但是,如果你继续学习,并实现更多高级功能,你可以创建一个真正灵活、高效的 API。

希望这篇文章对你有所帮助,如有任何疑问或建议,请在下方留言。

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


猜你喜欢

  • ECMAScript 2020:如何实现高效的异步编程

    前言 随着Web应用程序的复杂性不断上升,异步编程已经成为了前端开发中至关重要的技能之一。ECMAScript 2020的发布为我们提供了许多新功能,可以让我们在异步编程中更加高效和有效。

    10 天前
  • GraphQL 最佳实践:如何处理客户端缓存?

    随着现代 Web 应用程序的日益复杂和数据密集型,客户端缓存成为保持应用程序快速和响应的重要部分。GraphQL 作为一种现代的数据查询语言,它的优越性能以及对数据的细粒度控制是通常 REST API...

    10 天前
  • 在 Deno 中使用 TypeORM 操作数据库

    前言 在 Deno 中进行后端开发已经逐渐变得流行。Den 这个新兴的 JavaScript 运行时,具有安全性、可维护性和性能等很多方面的优点。而 TypeORM 则是一个自我和生态效应都很不错的 ...

    10 天前
  • Socket.io 客户端断开的处理方法

    Socket.io 是一种用于实时数据通信的 JavaScript 库,非常适合构建实时的 Web 应用程序。当客户端连接到服务器时,Socket.io 提供了一个简单的开箱即用的解决方案,但是当客户...

    10 天前
  • 使用 Chai 和 Mocha 测试 AngularJS 服务

    AngularJS 是一个流行的前端框架,提供了丰富的服务和指令来帮助我们开发复杂的应用程序。然而,在开发过程中,我们需要保证我们的代码是正确的,可靠的,并且符合期望行为。

    10 天前
  • 遇到 PM2 出错后,如何进行快速 Dump 内存?

    遇到 PM2 出错后,如何进行快速 Dump 内存? 在前端开发过程中,我们经常会使用 PM2 来进行进程管理。但有时候我们也会遇到一些错误,比如进程崩溃、内存泄漏等问题。

    10 天前
  • MongoDB 中数据迁移的最佳实践

    在开发前端应用程序时,我们经常需要对数据库进行操作,确保应用程序能够处理和存储大量数据。MongoDB 是一个非常流行的 NoSQL 数据库,它提供了灵活的数据建模和快速的读写性能,使其成为前端工具箱...

    10 天前
  • PWA 技术的应用场景及优势介绍

    作为前端开发者,了解 PWA 技术已经不再是可选项,而是成为必备技能之一。本文将介绍 PWA 的应用场景和优势,并附带示例代码进行演示和学习。 什么是 PWA? PWA 全称是 Progress We...

    10 天前
  • .NET程序性能优化技巧汇总

    如果你是一名.NET前端开发者,你一定知道.NET程序性能优化的重要性。最大化性能可以使你的网站在用户眼中看起来更快、更流畅,并且可以增加网站的可靠性和可用性。在本文中,我们将分享.NET程序性能优化...

    10 天前
  • Babel 常用插件介绍与使用方法

    随着前端技术的发展,JavaScript也越来越重要,为了让不同浏览器和不同版本的JavaScript发挥类似的效果,如今我们采用了一种被称为“Babel”的工具。

    10 天前
  • RxJS 中的计时器(timer)操作符及应用场景

    RxJS 是一个流行的 JavaScript 库,用于处理异步和事件驱动的编程。它就像一个工具箱,其中包含了许多操作符,您可以使用这些操作符来过滤、转换和组合数据流。

    10 天前
  • Express.js 路由模块的最佳实践

    Express.js 是一个基于 Node.js 平台构建的 Web 应用程序框架,它提供了一系列强大的功能,包括路由。路由是指将请求的 URL 映射到相应的处理函数。

    10 天前
  • 响应式设计下优化网站加载速度的技巧

    在今天的互联网时代,移动设备已经成为了人们生活和工作中不可或缺的一部分。为了保证在不同设备上都能良好地显示网站内容,响应式设计已成为了不可或缺的一部分。然而,响应式设计会带来网站加载速度下降的问题。

    10 天前
  • 在 Hapi.js 中使用 Sequelize 操作 MySQL 数据库

    在现代 Web 开发中,前端和后端已经越来越模糊。前端开发人员必须掌握后端开发技能以便于进行全栈开发。本文将介绍如何在 Hapi.js 中使用 Sequelize 操作 MySQL 数据库。

    10 天前
  • ESLint 的 10 个最佳练习

    介绍 ESLint 是一款用于 JavaScript 代码检查的工具。它可以帮助前端开发者在写代码时发现潜在的问题,提高代码的质量和可维护性。然而,ESLint 本身并不是万能的,在使用时还需要遵循一...

    10 天前
  • Jest 和 Enzyme 结合进行响应式组件测试

    在前端开发中,测试是一个至关重要的部分。Jest 和 Enzyme 是两个非常受欢迎的测试框架之一,它们都能有效地帮助开发人员进行测试。本文将详细介绍 Jest 和 Enzyme 结合进行响应式组件测...

    10 天前
  • 使用 ECMAScript 2020 的 Class Property Declarations 减少代码复杂度

    ECMAScript 2020 带来了许多新功能,其中之一是类属性声明 (Class Property Declarations)。这项新功能为前端开发人员提供了一种简化代码的方式,从而减少代码复杂度...

    10 天前
  • Fastify 帮助解决 CORS 问题的技巧

    CORS 是一种浏览器安全策略,用于防止跨域攻击。 在前端开发中,开发人员通常需要与不同来源的后端 API 进行交互,并且在该过程中可能会遇到 CORS 问题,这将导致浏览器阻止从其他来源加载资源。

    10 天前
  • 如何使用 GraphQL 响应数据的过滤器?

    GraphQL 是一种查询语言,能够更好地应对多种数据需求。在前端开发中,GraphQL 已经变得非常流行,因为它允许开发人员获取所需的数据。GraphQL 通过查询和变异语句使用 schema 的形...

    10 天前
  • 如何在 Mocha 测试框架中测试 Web 应用程序?

    前端开发人员必须始终确保他们的 Web 应用程序在各种情况下都能正常运行,而测试是这个过程中不可或缺的一步。Mocha 是一个流行的 JavaScript 测试框架,它可以帮助开发人员编写可靠的单元测...

    10 天前

相关推荐

    暂无文章