如何使用 Node.js 和 Express 创建一个简单的 GraphQL 服务器

GraphQL 是一种用于 API 的查询语言,可以帮助前端开发人员更好地定义和获取与服务器交互的数据。使用 Node.js 和 Express 可以轻松地创建一个 GraphQL 服务器,本文将详细介绍如何实现它。

安装必要的依赖

首先,我们需要安装一些必要的依赖项,包括 Express、GraphQL、graphql-tools 和 body-parser:

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

创建 GraphQL Schema

GraphQL Schema 是定义 GraphQL API 的核心部分。我们将使用 graphql-tools 库来创建一个基本的 schema。

在项目根目录下创建一个名为 schema.js 的文件,并添加以下代码:

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

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

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

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

代码中定义了一个 Query 类型,该类型具有一个 hello 字段,该字段返回字符串 "Hello world!"。

创建 Express 应用程序

接下来,创建一个 Express 应用程序,并在其中启用 GraphQL API。在项目根目录下创建一个名为 app.js 的文件,并添加以下代码:

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

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

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

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

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

代码中创建了一个 Express 应用程序,并在 /graphql 路由中使用 graphqlExpress 中间件来启用 GraphQL API。在 /graphiql 路由中,使用 graphiqlExpress 中间件来启用 GraphiQL 工具。最后,应用程序在本地的端口 3000 上启动。

运行 GraphQL 服务器

将项目文件转到项目根目录,并使用以下命令运行服务器:

- ---- ------

打开浏览器,访问 http://localhost:3000/graphiql,如果一切正常,您将看到 GraphiQL 工具在屏幕上。

在 GraphiQL 中,在左侧的查询编辑器中输入以下查询:

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

然后单击右上角的运行按钮。应该会在右侧的响应窗口中会看到以下输出:

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

这就是我们的第一个 GraphQL 查询,返回文本 “Hello world!” 。

结论

使用 Node.js 和 Express 创建一个简单的 GraphQL 服务器非常简单。本文介绍了如何安装必要的依赖项、如何定义 GraphQL Schema、如何使用 Express 启用 GraphQL API,并提供了可运行的示例代码。

GraphQL 是一个非常强大的 API 查询语言和类型系统,可以轻松地定义和检索需要的数据,这使得开发出现了巨大的变革。我们建议您探索 GraphQL 的其他功能,并将其集成到自己的开发项目中。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6712e8aead1e889fe2093704