内容提要
在开发Woovi挑战时,我遇到了一些关于Koa.js和GraphQL的问题,特别是在迁移到graphql-http时。由于koa-graphql几乎被弃用,我选择了graphql-http。虽然它简单,但缺乏自定义错误处理和graphiql支持。通过创建处理程序和适配上下文类型,我解决了这些问题并简化了错误处理,最终成功更新了库并优化了项目。
关键要点
-
在开发Woovi挑战时,选择使用graphql-http替代koa-graphql,因为后者几乎被弃用。
-
graphql-http功能简单,但缺乏自定义错误处理和graphiql支持。
-
通过创建处理程序和适配上下文类型,解决了graphql-http的功能缺失问题。
-
在迁移过程中,首先需要完全移除koa-graphql并安装graphql-http。
-
创建处理程序时,需要导入createHandler并传入schema和context。
-
适配context类型时,需注意headers的获取方式发生变化。
-
创建了一个函数来正确验证和获取GraphQL HTTP头信息。
-
错误处理变得更简单,只需添加一个中间件来处理GraphQL错误。
-
graphiql的访问方式进行了调整,使用ruru在开发环境中访问playground。
-
最终成功更新库,优化项目并节省了一些KB的体积。
延伸问答
为什么选择从koa-graphql迁移到graphql-http?
因为koa-graphql几乎被弃用,graphql-http是一个更简单的替代方案。
graphql-http有哪些功能缺失?
graphql-http缺乏自定义错误处理和graphiql支持。
迁移到graphql-http的第一步是什么?
第一步是完全移除koa-graphql并安装graphql-http。
如何创建graphql-http的处理程序?
通过导入createHandler并传入schema和context来创建处理程序。
如何处理graphql-http中的错误?
只需添加一个中间件来处理GraphQL错误,简化了错误处理。
如何在开发环境中访问graphiql?
使用ruru工具在开发环境中访问playground。