GraphQL 是一种用于 API 的查询语言,它提供了一种更加高效、强大、灵活的方式来描述数据的传输和操作。Fastify 是一个快速、低开销且可扩展的 web 框架,它的性能比 Express 更好。
在本文中,我们将介绍如何使用 Fastify 实现 GraphQL 服务端。我们将使用 Apollo Server 来处理 GraphQL 请求,它是一个流行的 GraphQL 实现。
安装和配置 Fastify
首先,我们需要安装 Fastify 和 Apollo Server。你可以使用 npm 或 yarn 进行安装:
npm install fastify apollo-server-fastify graphql
或者
yarn add fastify apollo-server-fastify graphql
然后,我们需要创建一个 Fastify 实例并将它与 Apollo Server 集成。这可以通过以下代码实现:
-- -------------------- ---- ------- ----- ------- - -------------------- ----- - ------------- --- - - -------------------------------- ----- -------- - ---- ---- ----- - ------ ------ - - ----- --------- - - ------ - ------ -- -- ------ ------- - - ----- ------ - --- -------------- --------- --------- -- ----------------------------------------
在上面的代码中,我们定义了一个简单的 GraphQL 查询类型和解析器。然后,我们创建了一个 Apollo Server 实例,并将它的请求处理程序注册到 Fastify 实例中。
现在,我们可以启动 Fastify 服务器并访问 GraphQL API。这可以通过以下代码实现:
fastify.listen(3000, err => { if (err) throw err console.log(`Server listening on ${fastify.server.address().port}`) })
现在,如果你访问 http://localhost:3000/graphql
,你将看到一个 GraphiQL 界面,你可以使用它来测试你的 GraphQL API。
查询和突变
我们已经成功地创建了一个 GraphQL API,现在我们来看看如何定义更复杂的查询和突变。
查询
GraphQL 查询可以包含多个字段,每个字段都有一个返回类型和一个解析器。下面是一个包含两个字段的查询:
-- -------------------- ---- ------- ----- -------- - ---- ---- ----- - ------ ------ ------ ------ - ---- ---- - --- -- ------ ------ ------- ------ - - ----- --------- - - ------ - ------ -- -- ------ -------- ------ -- -- - - --- ---- ------ ------ -------- ------- ----- -------- -- - --- ---- ------ ---- -------- ------- ------- -------- -- - --- ---- ------ ---- ---- -- --- ------- ------- ------- -------- - - - -
在上面的代码中,我们定义了一个 Book
类型和一个 books
字段,它会返回一个包含三本书的数组。我们还定义了一个 hello
字段,它返回一个字符串。
突变
突变是一种用于修改数据的 GraphQL 操作。下面是一个用于添加新书的突变:
-- -------------------- ---- ------- ----- -------- - ---- ---- ----- - ------ ------ - ---- -------- - -------------- -------- ------- --------- ---- - ---- ---- - --- -- ------ ------ ------- ------ - - --- ----- - - - --- ---- ------ ------ -------- ------- ----- -------- -- - --- ---- ------ ---- -------- ------- ------- -------- -- - --- ---- ------ ---- ---- -- --- ------- ------- ------- -------- - - ----- --------- - - ------ - ------ -- -- ----- -- --------- - -------- --- - ------ ------ -- -- - ----- ---- - - --- ------------------- - --- ------ ------ - ---------------- ------ ---- - - -
在上面的代码中,我们定义了一个 Mutation
类型和一个 addBook
突变,它接受 title
和 author
参数,并将新书添加到 books
数组中。
总结
在本文中,我们介绍了如何使用 Fastify 和 Apollo Server 实现 GraphQL 服务端。我们看到了如何定义查询和突变,并编写了相应的解析器。我们还学习了如何使用 GraphiQL 来测试我们的 GraphQL API。现在,你可以使用这些知识来创建自己的 GraphQL 服务端。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6554208dd2f5e1655ddcdeea