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-mount
koa
的官方主页是:
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
的经验文章,请点击:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。