GraphQL 是一种用于 API 的查询语言,它通过定义类型和字段来描述数据。GraphQL 在前端开发中的应用越来越广泛,本文介绍了如何在 Fastify 应用中集成 GraphQL。我们将介绍 GraphQL 常用概念和 Fastify 框架的基本使用,然后指导读者如何将两者结合实现 GraphQL API。
基础知识
GraphQL 概念
- 模式(Schema):GraphQL 模式定义了被API支持的类型、关系以及查询。
- 查询(Query):GraphQL 查询描述客户端想要从 API 中检索的数据。
- 变量(Variables):变量允许我们指定执行查询时的参数并使用它们在不同查询之间进行重用。
- 条目(Fields):GraphQL 查询请求的字段,就像对象属性一样。
- 解析器(Resolvers):负责处理 GraphQL 查询和变异的函数。
- 分页(Pagination):分页允许您限制单次数据返回的条目数以提高性能。
- 订阅与实时数据(Subscriptions & Realtime data):GraphQL 支持实时数据与订阅。
Fastify 框架
Fastify 是一个注重性能的 Web 框架。 它基于 Node.js 构建,支持异步编程和插件式开发。Fastify 非常轻量级,拥有非常好的性能和低的内存消耗。
集成 GraphQL
现在让我们来看看如何将 GraphQL 集成到 Fastify 应用程序中的步骤:
- 首先,安装所需的包。我们需要
fastify
、fastify-gql
和graphql
。可以使用 npm 安装这些包:
npm install fastify fastify-gql graphql
- 然后,创建 Fastify 应用程序并将 GraphQL 插件添加到它中。
-- -------------------- ---- ------- ----- ------- - --------------------- ---------------------------------------- - ------- ------------ ---------- --------------- --- -------------------- ----- -- - -- ----- - ----------------------- ---------------- - ------------------- -- ------- -- ---- ------- ---
在上面的代码中,require('fastify-gql')
导入 Fastify 的 GraphQL 插件。我们还要注意,在 {}
对象中,需要指定 GraphQL 的 schema 和 resolver。
- 创建你的 schema 和 resolver。
GraphQL 的一个重要部分是 schema,它定义了客户端能够查询的所有数据类型以及查询之间的关系。 通常,GraphQL 模式是由 GraphQL 型定义和 GraphQL 查询定义组成的。
-- -------------------- ---- ------- ----- - ----------- - - ------------------- ----- -------- - - ---- ---- - --- --- ----- ------- ---- --- - ---- ----- - -------- ----- ---- ------ ------ - -- ----- --------- - - ------ - ----- --- - -- -- -- ---------------- ------ -- -- -------------- - - ----- ------ - ---------------------- ----- ----------- - ---- -- - ------ - --- ---- ----- ------- ---- -- -- -- ----- ----------- - -- -- - ------ - - --- ---- ----- ------- ---- -- -- - --- ---- ----- ------- ---- -- -- - --- ---- ----- -------- ---- -- -- -- --
在上面的代码中,首先我们定义了 typeDefs
,以及对之进行解析的 resolvers
。这些定义被组成一个 schema ,构建后 schema
对象可以由 GraphQL 插件使用。
- 为 Fastify 应用程序添加路由
fastify.route({ method: 'POST', url: '/graphql', handler: function (req, reply) { reply.graphql(req.body); } });
在上面的代码中,我们使用 fastify.route()
创建一个 GraphQL 路由。请注意,GraphQL 只支持 POST 方法,fastify-gql
插件提供的 reply.graphql()
方法接受 GraphQL 查询并返回结果。
- 运行 Fastify 应用程序
最后,运行 Fastify 应用程序并在 /graphql
路径下发布 GraphQL API。
$ node index.js
示例代码
为了更好地理解,以下是完整的代码示例:
-- -------------------- ---- ------- ----- ------- - --------------------- ----- - ----------- - - ------------------- ----- -------- - - ---- ---- - --- --- ----- ------- ---- --- - ---- ----- - -------- ----- ---- ------ ------ - -- ----- --------- - - ------ - ----- --- - -- -- -- ---------------- ------ -- -- -------------- - - ----- ------ - ---------------------- ----- ----------- - ---- -- - ------ - --- ---- ----- ------- ---- -- -- -- ----- ----------- - -- -- - ------ - - --- ---- ----- ------- ---- -- -- - --- ---- ----- ------- ---- -- -- - --- ---- ----- -------- ---- -- -- -- -- ---------------------------------------- - ------- ---------- --- --------------- ------- ------- ---- ----------- -------- -------- ----- ------ - ------------------------ - --- -------------------- ----- -- - -- ----- - ----------------------- ---------------- - ------------------- -- ------- -- ---- ------- ---
总结
在本文中,我们学习了如何在 Fastify 应用程序中整合 GraphQL API。我们了解了 GraphQL 的基本概念和 Fastify 框架的使用,然后演示了如何将两者结合起来创建基本的 GraphQL API 服务。希望我们的经验能对读者有所启发,并能在他们的项目中实现类似的 GraphQL API 服务。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f6bb04f6b2d6eab3f4741d