前言
GraphQL 是一种由 Facebook 开发的数据查询语言,它提供了一种类似 RESTful API 的结构化数据传输方式。GraphQL 可以根据客户端的需要一次性查询多个资源,避免了 RESTful API 的一个痛点——多次请求不同的 API 来获取所需数据。
@exogen/graphql-tools
是一款 GraphQL 辅助开发工具包。它为我们提供了一些非常方便实用的工具函数,可以帮助我们更便捷地进行 GraphQL API 的开发和测试。
本文将介绍 @exogen/graphql-tools
的使用方式,带领读者深入掌握 GraphQL 相关开发技能。
安装
使用 npm 可以很方便地安装 @exogen/graphql-tools
:
npm install @exogen/graphql-tools
使用方法
1. makeExecutableSchema()
makeExecutableSchema()
函数可以将字符串格式的 schema 转化为可运行的 schema 对象。它是 @exogen/graphql-tools
中最鲜明的特点之一,非常适合我们在业务中使用 GraphQL。
使用示例:
-- -------------------- ---- ------- ------ - -------------------- - ---- ------------------------ ----- -------- - - ---- ----- - ------ ------ - -- ----- --------- - - ------ - ------ -- -- ------ -------- -- -- ----- ------ - ---------------------- --------- ---------- ---
通过这个例子可以看出,我们可以通过字符串的方式来定义 GraphQL schema,可以非常快速地上手 GraphQL API 开发。
2. mergeSchemas()
如果我们有多个 GraphQL schema,可以使用 mergeSchemas()
函数将它们合并为一个 schema。
使用示例:
import { mergeSchemas } from '@exogen/graphql-tools'; import schema1 from './schema1'; import schema2 from './schema2'; const schema = mergeSchemas({ schemas: [schema1, schema2], });
我们只需要将多个 schema 的数组传入 mergeSchemas()
中即可。
3. generateSchema()
generateSchema()
函数可以快速生成一个符合 GraphQL 规范的 schema,其中包含了常用的 scalar 类型。
使用示例:
import { generateSchema } from '@exogen/graphql-tools'; const schema = generateSchema();
这样我们就可以快速生成一个完整的 GraphQL schema 对象,让我们在开发和测试 GraphQL API 时事半功倍。
4. addMockFunctionsToSchema()
addMockFunctionsToSchema()
函数可以为 GraphQL schema 中的每个字段都生成一个 mock 函数,方便我们在开发和测试时进行模拟数据。
使用示例:
-- -------------------- ---- ------- ------ - --------------------- ------------------------ - ---- ------------------------ ----- -------- - - ---- ----- - ----- ------ ---- --- - -- ----- ------ - ---------------------- -------- --- -------------------------- ------- ------ - ------ -- -- -- ----- -- -- ---------------------- ---- -- -- ---------------------- --- -- ---
我们使用 addMockFunctionsToSchema()
为每个字段都生成了一个 mock 函数,这个函数可以用于本地开发和测试,方便我们进行数据模拟。
5. filterSchema()
在开发和测试 GraphQL API 时,我们难免遇到无用的数据项。我们可以使用 filterSchema()
函数去除其中的无用项,使得开发和测试的时候更加高效和清晰。
使用示例:
import { filterSchema } from '@exogen/graphql-tools'; const schema = filterSchema({ schema, rootFieldFilter: (operationName, field) => !['rootField1', 'rootField2'].includes(field.name), typeFilter: (type) => !['Query', 'Mutation'].includes(type.name), });
我们可以通过传递两个回调函数来自定义筛选规则,从而达到自己想要的 schema 结构。
结语
@exogen/graphql-tools
为 GraphQL API 的开发和测试带来了非常多的便利性,它的使用方法也非常简单易学。
在实际的开发工作中,我们可以将其应用于自己的业务场景中,提升开发效率和开发质量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056cd381e8991b448e664f