使用
在项目中建一个 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