简介
@types/express-graphql 是一个 TypeScript 类型定义文件,用于增强 express-graphql 的类型提示和代码补全,方便前端开发人员在 GraphQL API 开发中使用 TypeScript 更加便捷。
安装
使用 npm 进行安装:
npm install @types/express-graphql -D
使用
基本使用
安装完 @types/express-graphql 后,在 TypeScript 中导入 express-graphql 时,将自动获得类型提示和代码补全功能。
-- -------------------- ---- ------- ------ ------- ---- ---------- ------ ----------- ---- ------------------ -- -- ----------- ----- --- - ---------- ------------------- ------------- ------- ---------------- --------- ----- ---- ---------------- -- -- - ---------------- --------- -- -------------------------------- ---
上述代码中,我们导入了 express-graphql,并使用 graphqlHTTP
对象在 /graphql
路径下开启了一个 GraphQL API,同时开启了 GraphiQL 调试工具。
在 MyGraphQLSchema 中定义好了 GraphQL Schema 后,即可在调试工具中进行 GraphQL API 的测试。
更多选项
除了上面的基本用法外,@types/express-graphql 还提供了更多选项来增强 GraphQL API 的功能和类型提示能力。
自定义上下文
app.use('/graphql', graphqlHTTP(async (req, res) => { const myContext = await getMyContext(req); return { schema: MyGraphQLSchema, graphiql: true, context: myContext, } }));
在上述代码中,我们通过 getMyContext
方法获取到了一个自定义的上下文对象,然后将 context
选项传递给了 graphqlHTTP
。这样,在 GraphQL Resolver 中使用 context
对象时,可以获得更清晰的类型提示。
自定义错误处理
-- -------------------- ---- ------- ------------------- ------------- ------- ---------------- --------- ----- -------------------- ------- -- - ------------------- -- ----------- ------ - -------- -------------- ---------- ---------------- ------ ----------- - ----------------------- - --- ----- ----------- -- -- ----
在上述代码中,我们通过 customFormatErrorFn
方法自定义了错误处理方式,将错误信息输出到控制台,并将错误信息包装成了 GraphQL 错误格式。
使用 Dataloader 进行数据加载
-- -------------------- ---- ------- ------ ---------- ---- ------------- ------ - ------------ - ---- ------------- ----- -------- - --- ------------------ ------------ -- -------------------- ------------------- ------------- ------- ---------------- --------- ----- -------- - -------- - --------- --------- -- -- ----
在上述代码中,我们使用了 Dataloader 包来进行数据加载,然后将 Dataloader 对象作为 GraphQL API 的 context
选项传递进去,以供 Resolver 使用。
使用订阅功能
-- -------------------- ---- ------- ------ - ------------------ - ---- ----------------------------- ------ - -------- --------- - ---- ---------- ----- -- - ------------------ --------------- -- -- - ---------------- --------- -- ------------------------------ --- --------------------------- ------- ---------------- -------- ---------- -- - ------- --- ----- ----------------- ---
在上述代码中,我们使用了 subscriptions-transport-ws 包来开启 GraphQL API 的订阅功能,然后在 SubscriptionServer 的 create
方法中传入 GraphQL Schema 和执行函数即可。
总结
@types/express-graphql 提供了丰富的选项,来增强 TypeScript 对 GraphQL API 开发的支持,方便前端开发人员进行 API 开发和测试。当然,前提是你需要一定的 TypeScript 和 GraphQL 基础知识,才能更好地掌握这个包的用法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/205634