GraphQL 是一种由 Facebook 开发的数据查询语言和运行时,它允许客户端定义自己需要的数据结构,而不是由服务器定义。GraphQL 可以用于任何语言和任何类型的应用程序,包括 Node.js。
本文将介绍 GraphQL 在 Node.js 中的使用方法和技术细节,包括 GraphQL 的基本概念、如何在 Node.js 中使用 GraphQL、GraphQL 的查询和变异、以及一些常见的 GraphQL 库和工具。
GraphQL 的基本概念
GraphQL 的核心概念包括:
- Schema:用于定义数据类型和查询方法的结构。
- Query:用于获取数据的请求。
- Mutation:用于修改数据的请求。
在 GraphQL 中,Schema 是最重要的部分。Schema 定义了可用的数据类型和查询方法,以及它们之间的关系。GraphQL 中的每个查询和变异都必须符合 Schema 的规则。
如何在 Node.js 中使用 GraphQL
要在 Node.js 中使用 GraphQL,需要安装 Node.js 和 GraphQL 库。最常用的 GraphQL 库包括 Apollo、Express GraphQL 和 graphql-yoga。
安装 GraphQL 库
使用 npm 安装 GraphQL 库:
npm install apollo-server-express express express-graphql graphql
创建 GraphQL 服务器
创建一个新的文件 server.js
并输入以下代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----------- - --------------------------- ----- - ----------- - - ------------------- -- -- ------ ----- ------ - ------------- ---- ----- - ------ ------ - --- -- -- -------- ----- ---- - - ------ -- -- ------ ------- -- -- -- ------- ---- ----- --- - ---------- -- -- ------- --- ------------------- ------------- ------- ------- ---------- ----- --------- ---- ---- -- ----- ---------------- -- -- ---------------- ------ -- ---------------------------------展开代码
在上面的代码中,我们首先定义了一个包含一个 hello
字段的查询类型。然后,我们定义了一个 Resolver,它将返回一个字符串 "Hello world!"。最后,我们创建了一个 Express 应用程序,并将 GraphQL 中间件添加到 /graphql
路径。graphiql
选项启用了 GraphiQL IDE,它是一个用于测试 GraphQL 查询的交互式工具。
查询数据
现在我们已经创建了一个 GraphQL 服务器,我们可以使用 GraphiQL IDE 来测试我们的查询。在浏览器中打开 http://localhost:4000/graphql
,您应该会看到一个交互式的 GraphQL 界面。
在左侧的查询编辑器中输入以下查询:
{ hello }
然后按下 "运行" 按钮,您应该会在右侧看到以下结果:
{ "data": { "hello": "Hello world!" } }
这个查询告诉服务器返回 hello
字段的值,它应该是一个字符串 "Hello world!"。
修改数据
GraphQL 还支持变异,它们允许您修改数据。下面是一个修改数据的示例:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----------- - --------------------------- ----- - ----------- - - ------------------- -- -- ------ ----- ------ - ------------- ---- ----- - ------ ------ - ---- -------- - ------------------- -------- ------ - --- -- -- -------- ----- ---- - - ------ -- -- ------ -------- ----------- -- ------- -- -- - ------ -------- --- -- ------------ - -- -- -- ------- ---- ----- --- - ---------- -- -- ------- --- ------------------- ------------- ------- ------- ---------- ----- --------- ---- ---- -- ----- ---------------- -- -- ---------------- ------ -- ---------------------------------展开代码
在上面的代码中,我们添加了一个名为 setMessage
的变异类型。这个变异将接受一个名为 message
的参数,并将其设置为一个字符串。在 Resolver 中,我们返回一个字符串,指示消息已设置为输入参数的值。
要测试这个变异,请在 GraphiQL 中输入以下查询:
mutation { setMessage(message: "Hello GraphQL!") }
按下 "运行" 按钮,您应该会在右侧看到以下结果:
{ "data": { "setMessage": "Message set to Hello GraphQL!" } }
这个变异告诉服务器将消息设置为 "Hello GraphQL!"。
常见的 GraphQL 库和工具
除了 Express GraphQL 和 Apollo 之外,还有许多其他的 GraphQL 库和工具可用于 Node.js。以下是一些常见的 GraphQL 库和工具:
- graphql-yoga:一个简单的 GraphQL 服务器,它集成了 Express、Apollo Server、subscriptions-transport-ws 和 graphql-playground。
- Prisma:一个开源的 ORM 和 GraphQL API 生成器,它可以轻松地将数据库连接到 GraphQL API 中。
- Nexus:一个类型安全的 GraphQL 构建器,它提供了一种简单的方法来定义 GraphQL Schema 和 Resolver。
- graphql-tools:一个用于构建和合并 GraphQL Schema 的工具集。
结论
GraphQL 是一种强大的数据查询语言和运行时,它可以用于任何类型的应用程序。在 Node.js 中使用 GraphQL 非常容易,只需安装 GraphQL 库并创建一个 GraphQL 服务器即可。通过使用 GraphQL,您可以轻松地定义查询和变异,并且可以通过使用常见的 GraphQL 库和工具来简化开发工作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/677a38bd5c5a933a3412865d