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

苏南大叔:GraphQL.js配合koa的源码例子,koa-graphql如何使用? - graphql-koa
GraphQL.js配合koa的源码例子,koa-graphql如何使用?(图3-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,这里记录苏南大叔和计算机代码的事情。本文中,将要讲述koagraphql如何结合的范例。测试环境:win10node@16.14.0graphql@16.3.0koa@2.13.4koa-graphql@0.12.0koa-mount@4.0

安装依赖

这里需要的依赖有:koakoa-graphqlkoa-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的依赖项目,被自动安装。

苏南大叔:GraphQL.js配合koa的源码例子,koa-graphql如何使用? - koa-graphql安装错误提示信息
GraphQL.js配合koa的源码例子,koa-graphql如何使用?(图3-2)

测试代码

和上一篇文章中的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的核心逻辑。

运行结果

苏南大叔:GraphQL.js配合koa的源码例子,koa-graphql如何使用? - koa版本的graphql
GraphQL.js配合koa的源码例子,koa-graphql如何使用?(图3-3)

下面还是用最开始的入门范例进行改造的,所以,输入的查询数据是:{hello}。服务器返回值是:

{
  "data": {
    "hello": "Hello world!"
  }
}

参考文献

总结

在使用graphiql查询界面的时候,大家会发现左侧的查询代码编写区非常的智能。如果不是特殊情况的话,也许接口文档都不需要了,代码查询区的智能提示做的非常棒。

更多graphql的经验文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。