GraphQL.js配合koa的源码例子,koa-graphql如何使用?
发布于 作者:苏南大叔 来源:程序如此灵动~
在nodejs开发的www服务领域,express是占有绝对地位的。在上一篇文章中,苏南大叔已经描述了express和graphql的配合使用情况。但是,其中有个小问题就是:express-graphql不支持最新的graphql@16,安装的时候上会有小的冲突信息。那么,现在主角换成了另外一个node平台的服务器软件koa,相同的故事还会发生么?koa-express会一样不支持最新的graphql么?

大家好,这里是苏南大叔的“程序如此灵动”博客,这里记录苏南大叔和计算机代码的事情。本文中,将要讲述koa和graphql如何结合的范例。测试环境:win10,node@16.14.0,graphql@16.3.0,koa@2.13.4,koa-graphql@0.12.0,koa-mount@4.0。
安装依赖
这里需要的依赖有:koa,koa-graphql,koa-mount。安装命令是:
npm i koa koa-graphql koa-mountkoa的官方主页是:
koa-express的页面地址是:
不过,对于koa-graphql@0.12.0来说,和最新的graphql@16不兼容的提示依然存在。所以,如果你先安装了graphql@16的话,请先卸载。然后安装koa-graphql@0.12.0,而electron@15会作为koa-graphql@0.12.0的依赖项目,被自动安装。

测试代码
和上一篇文章中的express代码对比的话,基本上大同小异。代码如下:
var { buildSchema, versionInfo } = require('graphql');
var schema = buildSchema(`
type Query {
hello: String
}
`);
var root = { hello: () => 'Hello world!' };
console.log(versionInfo)
const Koa = require('koa');
const mount = require('koa-mount');
const { graphqlHTTP } = require('koa-graphql');
const app = new Koa();
app.use(
mount(
'/graphql',
graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,
}),
),
);
app.listen(4000);
console.log('http://localhost:4000/graphql')核心对象依然是graphqlHTTP,
- 参数
graphiql控制是否显示查询页面。 - 参数
schema控制graphql的核心逻辑。
运行结果

下面还是用最开始的入门范例进行改造的,所以,输入的查询数据是:{hello}。服务器返回值是:
{
"data": {
"hello": "Hello world!"
}
}参考文献
- https://newsn.net/say/graphql.html
- https://newsn.net/say/graphql-node.html
- https://newsn.net/say/graphql-import-schema.html
总结
在使用graphiql查询界面的时候,大家会发现左侧的查询代码编写区非常的智能。如果不是特殊情况的话,也许接口文档都不需要了,代码查询区的智能提示做的非常棒。
更多graphql的经验文章,请点击: