在前端开发中,构建 API 是一个必需的步骤,这通常涉及到框架、语言和服务器问题。在本文中,我们将介绍如何使用 Fastify 搭建一个 GraphQL API 服务器,并且提供详细的指导、示例代码和深入的学习。
什么是 Fastify?
Fastify 是一个快速、低开销且体积小的 Web 框架。它旨在提供提升开发体验的最佳性能。它也支持插件,允许您轻松扩展框架功能。
Fastify 对比其他 Web 框架的优点:
- 非常快
- 低内存消耗
- 插件友好
- 迅速渐进的 API 构建方式
- 支持异步
- 适用于微服务架构
为什么使用 GraphQL?
GraphQL 是一个由 Facebook 开发的数据查询和操作语言。它旨在提供高效、强大、灵活的 API 查询语言。使用 GraphQL API 意味着可以定义响应式的数据图,而不是基于 REST 实现的固定数据点。
以下是使用 GraphQL 的主要优点:
- 可以使用少量请求获得大量数据
- 可以跨多个数据源执行查询
- 动态的查询,即客户端可以修改查询
完整指南
在本指南中,我们将介绍如何使用 Fastify 构建 GraphQL API。我们将从安装和配置 Fastify 到发布 GraphQL API。以下是我们要完成的任务列表:
- 安装和配置 Fastify
- 安装和配置 GraphQL
- 构建 GraphQL Schema
- 编写 Resolver
- 运行 GraphQL 服务器
安装和配置 Fastify
使用以下命令安装 Fastify:
npm i fastify --save
然后,在您的项目中创建 Fastify 实例并监听端口:
const fastify = require('fastify')() fastify.listen(3000, (err, address) => { if (err) throw err console.log(`fastify server running on ${address}`) })
这个示例创建了一个运行在 3000 端口上的 Fastify 服务器。在我们添加 GraphQL 之前,我们需要安装并配置其他依赖项。
安装和配置 GraphQL
使用以下命令安装 GraphQL 相关依赖:
npm i graphql fastify-gql --save
fastify-gql 是 Fastify 的 GraphQL 插件,它将允许我们在 Fastify 服务器中添加 GraphQL 的功能。
现在,在 Fastify 应用程序中添加 fastify-gql 插件:
-- -------------------- ---- ------- ----- ------- - -------------------- ----- --- - ---------------------- ----- - -------------------- - - ------------------------ ----- --------- - ---------------------- ----- -------- - - ---- ----- - ----- - ------ - - ----- ------ - ---------------------- --------- ---------- --------- -- --------------------- - ------- --------- ---- -- -------------------- ----- -------- -- - -- ----- ----- --- -------------------- ------ ------- -- ------------ --
在上面的示例中,我们使用 makeExecutableSchema
从 resolvers.js
文件中创建 GraphQL 架构。我们将在下一节中讨论 Resolver。
fastify-gql 插件还允许我们使用 GraphiQL(GraphQL IDE)从 localhost:3000/graphiql 中进行查询。
构建 GraphQL Schema
通过使用 typeDefs,我们可以定义我们的 GraphQL Schema。这是 GraphQL API 的结构和数据类型的描述。
我们将编写一个简单的示例,让我们通过查询 Hello 获得返回值:
const typeDefs = ` type Query { hello: String } `
这意味着我们期望查询响应 “Hello” 字符串。请注意,我们将在这个示例中只定义一个查询。
编写 Resolver
Resolver 是查询响应的实际方法。Resolver 接收请求并返回响应。
在 Resolver 中,我们将返回在 schema 中定义的字段 hello 的值。
const Resolvers = { Query: { hello: () => 'Hello world!' }, }
在上面的示例中,我们将为 Query 类型的每个字段编写一个 Resolver。我们现在只有一个 Query 字段。
运行 GraphQL 服务器
在完成上述步骤后,我们现在可以运行 Fastify 服务器和 GraphQL API:
npm start
现在,打开浏览器并导航到 http://localhost:3000/graphiql,现在您可以查询 API。
在 GraphiQL 窗口中,输入以下查询:
{ hello }
在右侧窗口中,您将获得响应:
{ "data": { "hello": "Hello world!" } }
恭喜您已经创建了一个 GraphQL API 服务器!
总结
在本文中,我们学习了如何使用 Fastify 搭建 GraphQL API。我们首先了解了 Fastify 和 GraphQL 的优点,然后介绍了安装和配置 Fastify 和 GraphQL 的步骤。接着,我们编写了 GraphQL Schema 和 Resolver,并最终运行了 GraphQL 服务器。
本文所涉及的代码可以通过 GitHub 获取详细了解:https://github.com/username/reponame。
在您的项目中实现和使用 GraphQL API 可以提高应用的灵活性和可维护性,希望此指南对您有所帮助!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6450e5b7980a9b385b9c5be5