什么是 GraphQL
GraphQL 是一种用于 API 的查询语言,它可以替代或补充传统的 REST 架构。GraphQL 的主要优点包括:
- 可以减少网络请求次数,提高性能
- 可以根据需要请求数据的不同,只返回所需的数据,减少数据冗余
- 具有更好的类型检查和自动化工具支持
Express.js 中使用 GraphQL 的优势
Express 是一个流行的 Node.js Web 框架,它具有灵活性和可扩展性,可以方便地集成第三方库和中间件。使用 GraphQL 在 Express 中可以进一步提高应用程序的性能和可维护性。
安装和配置
在 Express.js 中使用 GraphQL 需要安装以下组件:
- express-graphql:用于在 Express 中添加 GraphQL 中间件
- graphql:用于创建和执行 GraphQL 查询
可以使用 npm 命令来安装这两个组件:
npm install express-graphql graphql
在 Express.js 中配置 GraphQL 的步骤如下:
导入所需的组件:
const express = require('express'); const { graphqlHTTP } = require('express-graphql'); const { buildSchema } = require('graphql');
创建 GraphQL 架构:
const schema = buildSchema(` type Query { hello: String } `);
在上面的示例中,我们为 GraphQL 架构定义了一个简单的查询,使用 Query 类型和 hello 字符串类型。
创建一个处理程序来执行查询:
const root = { hello: () => { return 'Hello World!'; }, };
上面的处理程序为查询定义了一个简单的 hello 函数,它返回一个字符串。
创建 Express 应用程序并向其添加 GraphQL 中间件:
-- -------------------- ---- ------- ----- --- - ---------- -------- ----------- ------------- ------- ------- ---------- ----- --------- ----- -- --
在上面的示例中,我们将 GraphQL 中间件添加到了应用程序中,并通过
schema
和rootValue
参数将 GraphQL 架构和查询处理程序传递给了中间件,graphiql:true
启用了 IDE。启动 Express 应用程序:
app.listen(4000, () => { console.log('Running a GraphQL API server'); });
通过上述步骤,已经成功地在 Express.js 中配置了 GraphQL API。
查询数据
在 GraphQL 中查询数据使用 Query
类型来定义查询,我们可以将查询理解为函数调用。
例如,我们可以编写如下的查询:
{ hello }
执行此查询时,我们应该得到一个字符串 "Hello World!"。
在 GraphQL 查询中,使用花括号 { }
来定义查询和查询参数。
修改数据
在 GraphQL 中,修改数据可以使用 Mutation
类型来定义更改操作,并将数据作为输入参数传递。
例如,我们可以定义一个 Mutation
类型的示例来添加新的用户。
-- -------------------- ---- ------- ----- ------ - ------------- ---- ---- - --- --- ----- ------- ------ ------- - ----- --------------- - ----- ------- ------ ------- - ---- -------- - ----------------- ----------------- ---- - ---
在上面的示例中,我们定义了一个名为 createUser
的 Mutation
,该操作接受一个输入参数 CreateUserInput
,并返回一个 User
对象。
然后,我们可以编写一个处理程序来执行添加用户操作,如下所示:
-- -------------------- ---- ------- ----- ---- - - ----------- ------ -- - ----- - ----- - - ----- ----- ------- - - --- ------------------------ - ------ ----- ----------- ------ ------------ -- ------ -------- -- --
每当我们执行 createUser
操作时,将调用上述处理程序,并利用输入参数来创建新的用户。
示例 GraphQL 查询:
mutation { createUser(input: { name: "Alice", email: "alice@example.com" }) { id name email } }
执行此查询将返回一个包含创建用户的数据的结果。
总结
在 Express.js 中使用 GraphQL 有很多优点,包括提高性能和可维护性。该指南介绍了 GraphQL 的基础知识和在 Express 中集成和使用 GraphQL 的步骤和示例代码。使用 GraphQL 的过程中需要更复杂的查询和更多的数据修改,请参考详细文档来实现您的需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a2475f48841e9894e9e21b