{"id":16013577,"url":"https://github.com/magicdawn/koa-jayson-rpc","last_synced_at":"2026-05-02T04:39:34.632Z","repository":{"id":58898663,"uuid":"193100674","full_name":"magicdawn/koa-jayson-rpc","owner":"magicdawn","description":"koa json rpc powered by jason","archived":false,"fork":false,"pushed_at":"2019-06-22T08:34:24.000Z","size":10,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-02T17:01:40.914Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/magicdawn.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-21T13:14:29.000Z","updated_at":"2019-06-22T08:32:13.000Z","dependencies_parsed_at":"2022-09-21T01:11:27.961Z","dependency_job_id":null,"html_url":"https://github.com/magicdawn/koa-jayson-rpc","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magicdawn%2Fkoa-jayson-rpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magicdawn%2Fkoa-jayson-rpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magicdawn%2Fkoa-jayson-rpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magicdawn%2Fkoa-jayson-rpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/magicdawn","download_url":"https://codeload.github.com/magicdawn/koa-jayson-rpc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247103308,"owners_count":20884024,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-08T14:41:58.768Z","updated_at":"2026-05-02T04:39:29.613Z","avatar_url":"https://github.com/magicdawn.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# koa-jayson-rpc\n\n\u003e koa json rpc powered by jayson\n\n[![Build Status](https://img.shields.io/travis/magicdawn/koa-jayson-rpc.svg?style=flat-square)](https://travis-ci.org/magicdawn/koa-jayson-rpc)\n[![Coverage Status](https://img.shields.io/codecov/c/github/magicdawn/koa-jayson-rpc.svg?style=flat-square)](https://codecov.io/gh/magicdawn/koa-jayson-rpc)\n[![npm version](https://img.shields.io/npm/v/koa-jayson-rpc.svg?style=flat-square)](https://www.npmjs.com/package/koa-jayson-rpc)\n[![npm downloads](https://img.shields.io/npm/dm/koa-jayson-rpc.svg?style=flat-square)](https://www.npmjs.com/package/koa-jayson-rpc)\n[![npm license](https://img.shields.io/npm/l/koa-jayson-rpc.svg?style=flat-square)](http://magicdawn.mit-license.org)\n\n## Install\n\n```sh\n$ npm i koa-jayson-rpc --save\n```\n\n## API\n\n```js\nconst Rpc = require('koa-jayson-rpc')\n```\n\n### `rpc = new Rpc(options)`\n\n#### `options.server`\n\nnew `Rpc` with a `jayson.Server` instance\n\n#### `options.methods`\n\nnew `Rpc` with a `methods` map same as `jayson.Server(methods)`\n\n#### `options.methodsDir` \u0026 `options.methodsDirOptions`\n\nnew `Rpc` with a `methods` map load from `methodsDir`,\nand `methodsDirOptions` passed to `require-directory` module\n\n### `app.use(rpc)`\n\n\u003e the `rpc` instance can be used as koa middleware or handler\n\n#### use `koa-mount`\n\nuse `koa-mount` if you need server work on the `/jsonrpc` path\n\n```js\nconst Koa = require('koa')\nconst mount = require('koa-mount')\nconst Rpc = require('koa-jayson-rpc')\n\nconst app = Koa()\nconst rpc = new Rpc({methodsDir: 'some-directory'})\napp.use(mount('/jsonrpc', rpc))\n```\n\n#### use impress-router\n\n```js\nconst setupKoaApp = () =\u003e {\n  const Koa = require('koa')\n  const Router = require('impress-router')\n\n  const app = new Koa()\n  const router = new Router()\n  router.augmentApp(app)\n\n  require('koa-onerror')(app)\n  require('koa-qs')(app, 'extended')\n\n  // post body\n  const bodyParser = require('koa-bodyparser')\n  app.use(\n    bodyParser({\n      formLimit: '5mb',\n      jsonLimit: '5mb',\n      textLimit: '5mb',\n    })\n  )\n\n  return app\n}\n\nasync function main() {\n  const rpc = new Rpc({methodsDir: __dirname + '/fixtures/server'})\n  const app = setupKoaApp()\n\n  // use rpc middleware\n  app.all('/jsonrpc', rpc)\n  app.all('/jsonrpc/:method', rpc)\n\n  const server = app.callback()\n  let json\n\n  json = await request(server)\n    .post('/jsonrpc')\n    .send({method: 'echo', params: {test: 'middleware works'}})\n    .then(res =\u003e res.body)\n  json.result.should.eql({test: 'middleware works'})\n\n  // use params.method\n  json = await request(server)\n    .post('/jsonrpc/echo')\n    .send({params: {test: 'params route works too'}})\n    .then(res =\u003e res.body)\n  json.result.should.eql({test: 'params route works too'})\n}\n```\n\n##### Notice\n\n- `method` \u0026 `params` \u0026 `id` \u0026 `jsonrpc`: order `ctx.params` \u003e `ctx.request.body` \u003e `ctx.query`\n- use `koa-qs` for pass `Object params` or `Array params` with `GET` request\n  - `Array`: `params[]=1\u0026params[]=2`\n  - `Array`: `params[0]=1\u0026params[1]=2`\n  - `Object`: `params[name]=1\u0026params[age]=2`\n\n## Changelog\n\n[CHANGELOG.md](CHANGELOG.md)\n\n## License\n\nthe MIT License http://magicdawn.mit-license.org\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagicdawn%2Fkoa-jayson-rpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmagicdawn%2Fkoa-jayson-rpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagicdawn%2Fkoa-jayson-rpc/lists"}