koa-jayson-rpc
v0.0.1
Published
koa json rpc powered by jayson
Downloads
13
Readme
koa-jayson-rpc
koa json rpc powered by jayson
Install
$ npm i koa-jayson-rpc --save
API
const Rpc = require('koa-jayson-rpc')
rpc = new Rpc(options)
options.server
new Rpc
with a jayson.Server
instance
options.methods
new Rpc
with a methods
map same as jayson.Server(methods)
options.methodsDir
& options.methodsDirOptions
new Rpc
with a methods
map load from methodsDir
,
and methodsDirOptions
passed to require-directory
module
app.use(rpc)
the
rpc
instance can be used as koa middleware or handler
use koa-mount
use koa-mount
if you need server work on the /jsonrpc
path
const Koa = require('koa')
const mount = require('koa-mount')
const Rpc = require('koa-jayson-rpc')
const app = Koa()
const rpc = new Rpc({methodsDir: 'some-directory'})
app.use(mount('/jsonrpc', rpc))
use impress-router
const setupKoaApp = () => {
const Koa = require('koa')
const Router = require('impress-router')
const app = new Koa()
const router = new Router()
router.augmentApp(app)
require('koa-onerror')(app)
require('koa-qs')(app, 'extended')
// post body
const bodyParser = require('koa-bodyparser')
app.use(
bodyParser({
formLimit: '5mb',
jsonLimit: '5mb',
textLimit: '5mb',
})
)
return app
}
async function main() {
const rpc = new Rpc({methodsDir: __dirname + '/fixtures/server'})
const app = setupKoaApp()
// use rpc middleware
app.all('/jsonrpc', rpc)
app.all('/jsonrpc/:method', rpc)
const server = app.callback()
let json
json = await request(server)
.post('/jsonrpc')
.send({method: 'echo', params: {test: 'middleware works'}})
.then(res => res.body)
json.result.should.eql({test: 'middleware works'})
// use params.method
json = await request(server)
.post('/jsonrpc/echo')
.send({params: {test: 'params route works too'}})
.then(res => res.body)
json.result.should.eql({test: 'params route works too'})
}
Notice
method
¶ms
&id
&jsonrpc
: orderctx.params
>ctx.request.body
>ctx.query
- use
koa-qs
for passObject params
orArray params
withGET
requestArray
:params[]=1¶ms[]=2
Array
:params[0]=1¶ms[1]=2
Object
:params[name]=1¶ms[age]=2
Changelog
License
the MIT License http://magicdawn.mit-license.org