前言
GraphQL 是一种新型的 API 设计语言,它是由 Facebook 开发的一款数据查询和操作语言,可以用于所有编程语言并可在各种类型的应用中使用。Fastify 是一个高度专注于性能的 Node.js Web 框架,其速度可以与 Express 相媲美。在本文中,我们将讨论如何将 GraphQL 集成进 Fastify 框架中,提供一个高效而强大的 API 接口。
准备工作
我们将使用 graphql-server-express
和 fastify-express
这两个库,它们分别用于设置 GraphQL API 和将 Express 应用程序集成到 Fastify 应用程序中,因为 Fastify 框架本身不支持 GraphQL。首先,我们需要安装这两个库:
npm install graphql-server-express fastify-express
接下来,我们将创建一个名为 server.js
的文件,并引入必要的库:
const fastify = require('fastify')(); const express = require("express") const graphqlHTTP = require('express-graphql') const { buildSchema } = require('graphql');
我们还需要在 server.js
中定义 GraphQL 的 schema:
const schema = buildSchema(` type Query { hello: String } `);
在上面的示例中,我们定义了一个简单的 Query,并指定了其返回类型为字符串。我们可以在该 Query 中将任何数据返回给客户端。
编写实现
现在我们已经引入了所有必要的库并定义了 GraphQL schema,接下来是编写上述 schema 的实现。通常情况下,我们将实现分解为解析器函数的集合,这些函数将与特定字段相关联。在本例中,我们定义了一个简单的解析器函数来实现 hello
Query:
const root = { hello: () => { return 'Hello world!'; }, };
我们将解析器函数存储在名为 root
的对象中,其中函数名称与 schema 中的字段名相同。现在我们可以将 GraphQL API 和 Fastify 应用程序集成起来。为此,我们使用 fastify-express
库,并将以下代码添加到 server.js
文件的末尾:
-- -------------------- ---- ------- ----- --- - ---------- ------------------- ------------- ------- ------- ---------- ----- --------- ----- ---- -------------------------------------------- - --- -- -------------------- ----- -------- -- - -- ----- ----- --- ------------------- --------- -- ------------ --
在上面的代码中,我们创建了一个 Express 应用程序实例,使用 graphqlHTTP
将 GraphQL API 附加到 /graphql
终端点,并启用了 GraphiQL。然后使用 fastify-express
将 Express 应用程序集成到 Fastify 应用程序中。
现在,我们已经完成了将 GraphQL 集成进 Fastify 应用程序的过程。运行 node server.js
命令启动应用程序,您应该能够在 Web 浏览器中导航到 http://localhost:3000/graphql
并使用 GraphiQL 界面来测试定义的 hello
Query。
结论
综上所述,我们已经详细探讨了如何在 Fastify 框架中集成 GraphQL API 接口,并提供了一个简单的示例。通过在 Fastify 应用程序中添加 GraphQL,开发人员可以充分利用 GraphQL 的优势,获得高度的灵活性和性能。最后提醒您,GraphQL 是一个非常强大的工具,它可以使您的应用程序的 API 支持各种查询和变更,以满足不同的业务需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f4b802c5c563ced563fe34