简介
graphql-tools
是一个npm包,提供了一些常用的 GraphQL 工具函数和类。它可以帮助我们更容易地实现 GraphQL API 开发,避免重复造轮子。
安装
使用 npm 安装 graphql-tools
:
npm install graphql-tools
基本使用
1. 构建 schema
graphql-tools
提供了一个 makeExecutableSchema
函数用于构建 schema。该函数接受一个对象参数,其中包含类型定义(typeDefs)和解析器(resolvers)等信息。
例如,我们可以创建一个简单的 schema:
-- -------------------- ---- ------- ----- - -------------------- - - ------------------------- ----- -------- - - ---- ----- - ------ ------ - -- ----- --------- - - ------ - ------ -- -- ------ -------- -- -- ----- ------ - ---------------------- --------- ---------- ---
这个 schema 定义了一个名为 Query
的类型,其中包含一个名为 hello
的字段,返回一个字符串 "Hello world!"。
2. 添加中间件
graphql-tools
还提供了一些中间件函数,用于处理请求和响应。最常用的是 addMockFunctionsToSchema
函数,它可以为 schema 中的每个字段自动生成 mock 数据,方便前端开发调试。
例如,我们可以修改上面的例子来添加 mock 数据:
const { addMockFunctionsToSchema } = require('graphql-tools'); addMockFunctionsToSchema({ schema }); // 然后查询 hello 字段 graphql(schema, '{ hello }').then(result => console.log(result));
这里就不需要手动在 resolvers
中实现 hello
字段的逻辑了。
3. 加载外部 schema
可以使用 mergeSchemas
函数将多个 schema 合并成一个。例如,我们可以创建两个文件 schemaA.js
和 schemaB.js
:
-- -------------------- ---- ------- -- ---------- ----- - -------------------- - - ------------------------- ----- -------- - - ---- ----- - -- ------ - -- ----- --------- - - ------ - -- -- -- ------ ---- ---- -- -- -------------- - ---------------------- --------- ---------- ---
-- -------------------- ---- ------- -- ---------- ----- - -------------------- - - ------------------------- ----- -------- - - ---- ----- - -- ------ - -- ----- --------- - - ------ - -- -- -- ------ ---- ---- -- -- -------------- - ---------------------- --------- ---------- ---
然后在另一个文件中加载它们并合并:
-- -------------------- ---- ------- ----- - ------------ - - ------------------------- ----- ------- - --------------------- ----- ------- - --------------------- ----- ------ - -------------- -------- --------- --------- --- -- ---- - - - -- --------------- -- -- - --------------- -- ---------------------
总结
graphql-tools
包提供了一些常用的 GraphQL 工具函数和类,可以帮助我们更容易地实现 GraphQL API 开发。本文介绍了该包的基本使用方法,并提供了一些示例代码。希望能对读者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/42577