使用

在项目中建一个 server.js 文件,加入下面配置的代码

最小配置

最小化配置只需要配置两个服务启动的端口号。会默认使用tingodb作为数据库,存放地址为项目启动目录下的data文件夹

const qenya = require('qenya')
qenya({
  appPort: 5000,
  apiPort: 5001
})

更完整的配置

const httpProxy = require('http-proxy')
const koaSend = require('koa-send')
const qenya = require('qenya')

qenya({
  // 管理后台的端口号,必填
  appPort: 5000,

  // 对外输出API的端口号,必填
  apiPort: 5001,

  // 可选
  config: {
    // 默认为tingodb,是一个轻量的类似mongodb的文件数据库
    // tingodb 数据库测试下来感觉不是特别稳定,不过作为mock数据库应该够用
    // 如果对数据有比较高的要求,或者多人协作,可以选择mongodb
    engine: 'tingodb|mongodb',

    // 当engine设置为mongodb时有效
    mongo: {
      // 配置数据存储的连接,默认值如下
      qenya: 'mongodb://localhost:27017/qenya',
      // mock数据存储的连接,默认值如下
      data: 'mongodb://localhost:27017/data'
    },

    // 当engine设置为tingodb时有效
    tingodb: {
      // 配置数据存储的目录,默认为 './data',项目根目录下面的data文件夹
      qenya: './data',
      // mock数据存储的目录,默认为'./data/data'
      data: './data/data'
    }
  },

  // 可选,API服务器使用了graphql来转换数据,所以返回的格式为 {data: ...} 或者 {errors:[]}
  // 可以在render里面转换为其它约定的格式
  render: function (res) {
    if (res.data) {
      return {
        success: true,
        data: res.data
      }
    } else {
      return {
        success: false,
        error: res.errors[0].message
      }
    }
  },

  // 可选,api服务内部的方法,用来扩展接口服务器的router
  route: (router) => {
    // 可以处理 demo
    router.get('/index.html', function (ctx) {
      await koaSend(ctx, 'demo/index.html')
    })

    // 可以把未匹配到的接口代理到服务器
    const proxy = new httpProxy.createProxyServer({
      target: 'http://realserver',
      changeOrigin: false,
    })
    router.get('/*', function (ctx) {
      proxy.web(ctx.req, ctx.res)
      ctx.body = ctx.res
    })
  }
})

执行

在终端下执行

$ node server

Qenya 会启动两个服务,一个是配置管理后台,另一个是API输出后台,打开浏览器,访问 http://localhost:5000

results matching ""

    No results matching ""