GraphQL 是一种由 Facebook 开发的数据查询语言和运行时,适用于任何客户端和服务器。它提供了一种更高效、强大和灵活的替代 REST 的方式来让客户端获取和修改数据。在本篇文章中,我们将讨论如何在 Node/Express 应用程序中集成 GraphQL,让你的应用程序更加高效和灵活。
安装
首先,我们需要安装一些必需的模块,分别是 express、express-graphql 和 graphql。你可以使用 npm 或者 yarn 进行安装。
npm install express express-graphql graphql
或者
yarn add express express-graphql graphql
创建 GraphQL Schema
GraphQL 中的 Schema 定义了数据模型的结构,以及可以查询和修改的字段。我们将使用 GraphQL 的 Schema Definition Language(SDL)来编写我们的 Schema。让我们创建一个名为 schema.js 的文件,并编写如下代码:
-- -------------------- ---- ------- ----- - ----------- - - ------------------- ----- ------ - ------------- ---- ----- - ------ ------ - --- -------------- - -------
在上面的代码中,我们定义了一个名为 Query 的类型,其中包含了一个名为 hello 的字段。此外,我们还使用 buildSchema 函数将上述 SDL 转换为 GraphQL Schema 对象,并将其导出。
创建 GraphQL Resolver
在 GraphQL 中,Resolver 是使用 Schema 中定义字段的所需要的功能。 Resolver 将接收查询,处理数据,然后将结果返回给客户端。
让我们创建一个名为 helloResolver 的文件,并编写如下代码:
const helloResolver = { hello: () => 'Hello, world!', }; module.exports = helloResolver;
在上面的代码中,我们定义了一个名为 hello 的 Resolver,它将返回“Hello, world!”字符串。Resolver 对象由字段名称组成的键和函数组成的值组成。
集成 GraphQL
现在让我们将 GraphQL 集成到我们的 Node/Express 应用程序中。我们将创建一个名为 server.js 的文件,并编写如下代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----------- - --------------------------- ----- ------ - -------------------- ----- ------------- - --------------------------- ----- --- - ---------- -------- ----------- ------------- ------- ------- ---------- -------------- --------- ----- -- -- ---------------- -- -- - -------------------- ------ ------- -- -------------------------------- ---
在上面的代码中,我们:
- 导入了 Express、express-graphql、schema 和 helloResolver 模块
- 创建了一个名为 app 的 Express 应用程序
- 使用 app.use 将 graphqlHTTP 中间件添加到应用程序中。graphqlHTTP 中的 schema 选项指向我们之前创建的 schema 对象;rootValue 选项是一个对象,其中包含了我们定义的 helloResolver;graphiql 选项允许我们使用 GraphiQL 进行交互性查询。
- 启动应用程序并在控制台打印 GraphQL 服务器的地址
测试
现在让我们启动服务器并使用浏览器访问 http://localhost:4000/graphql。您将看到 GraphiQL 界面。
在左边的查询窗格中键入以下查询:
{ hello }
单击运行按钮,您应该看到以下响应:
{ "data": { "hello": "Hello, world!" } }
这表明我们的 Node/Express 应用程序现在支持 GraphQL 查询。您可以添加更多的类型和 Resolver,来支持更多复杂的查询和修改数据操作。
结论
在本篇文章中,我们介绍了如何在 Node/Express 应用程序中集成 GraphQL。我们创建了一个基本的 Schema 和 Resolver,并向应用程序添加了 GraphQL middleware。
GraphQL 是一种强大的数据查询语言和运行时,可帮助您构建更高效、强大和灵活的应用程序。希望本文能给您带来启示,并让您更好地了解如何在 Node/Express 应用程序中使用 GraphQL。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674729a8555db9718d0575bc