GraphQL 是一种用于 API 的查询语言,它可以让前端开发人员轻松地获取所需的数据。Fastify 是一个快速、低开销且灵活的 Web 框架,它在性能方面表现出色。本文将介绍如何使用 Fastify 和 GraphQL 创建高效且易于维护的 API。
安装 Fastify 和相关插件
首先,我们需要安装 Fastify 及其相关插件。可以使用以下命令进行安装:
npm install fastify fastify-gql fastify-cors graphql
Fastify-gql 是用于将 GraphQL 集成到 Fastify 的插件,Fastify-cors 则是用于处理跨域请求的插件。
创建 GraphQL Schema
GraphQL Schema 定义了数据模型和查询方式。我们需要创建一个 schema.js 文件,用于定义我们的数据模型和查询方式。以下是一个示例 schema:
-- -------------------- ---- ------- ----- - --- - - --------------------------------- ----- -------- - ---- ---- ------ - --- --- ----- ------- ------ -------- - ---- ---- - --- --- ------ ------- ------- ------- - ---- ----- - ------ -------- -------- ----- ----- -------- ---------- ---------- ----- ------- - -- -------------- - ---------展开代码
在这个 schema 中,我们定义了两个类型:Author 和 Book。每个类型都有一些字段,用于描述该类型的属性。我们还定义了 Query 类型,它包含一些查询方法,用于获取数据。
创建 Resolvers
Resolvers 是用于响应查询的函数。我们需要创建一个 resolvers.js 文件,用于定义我们的查询方法。以下是一个示例 resolvers:
-- -------------------- ---- ------- ----- ----- - - - --- ---- ------ ---- ----- -------- --------- --- -- - --- ---- ------ --- ---- - ------------- --------- --- -- - --- ---- ------ ------- --------- --- -- -- ----- ------- - - - --- ---- ----- --- ----- ----------- -- - --- ---- ----- ------- ---- -- - --- ---- ----- ------- ------- -- -- ----- --------- - - ------ - ------ -- -- ------ ----- --- - -- -- -- --------------- -- ------- --- ---- -------- -- -- -------- ------- --- - -- -- -- ------------------- -- --------- --- ---- -- ----- - ------- ------ -- ------------------- -- --------- --- --------------- -- ------- - ------ -------- -- ----------------- -- ------------- --- ----------- -- -- -------------- - ----------展开代码
在这个 resolvers 中,我们定义了一些查询方法,用于获取数据。我们还定义了一些字段解析器,用于解析类型之间的关系。
创建 Fastify 应用
现在,我们已经完成了 GraphQL Schema 和 Resolvers 的编写,接下来我们需要创建 Fastify 应用程序并将其与 GraphQL 集成。以下是一个示例 app.js:
-- -------------------- ---- ------- ----- ------- - --------------------- ----- - ------------ - - --------------------------------- ----- -------- - -------------------- ----- --------- - ----------------------- ----- ------ - --- -------------- --------- ---------- --- ----------------------------------------- -------------------- ----- -- - -- ----- - ------------------- ---------------- - ------------------- ------- -- ---- ------- ---展开代码
在这个应用程序中,我们创建了一个 Fastify 实例,并使用 ApolloServer 将其与 GraphQL 集成。我们还将应用程序绑定到端口 3000 上。
测试 API
现在我们已经创建了 Fastify 应用程序和 GraphQL API,接下来我们可以使用 GraphQL Playground 或其他工具来测试 API。以下是一个示例查询:
-- -------------------- ---- ------- ----- - ----- - -- ----- ------ - -- ---- - - -展开代码
这个查询将返回所有图书的 ID、标题和作者的 ID 和名称。我们还可以使用其他查询方法来获取我们需要的数据。
结论
在本文中,我们介绍了如何使用 Fastify 和 GraphQL 创建高效且易于维护的 API。通过合理地使用 GraphQL Schema 和 Resolvers,我们可以轻松地定义数据模型和查询方式。Fastify-gql 插件使得将 GraphQL 集成到 Fastify 中变得非常容易。最后,我们可以使用 GraphQL Playground 或其他工具来测试 API,并获取我们需要的数据。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/677d0bcf3c02e498447a52e4