@eryue/koa-router-mapping
v1.1.10
Published
a way to make your koa router Configurable & Combinable & Reusable, yeah, just a function mapping.
Downloads
4
Readme
a way to make your koa router Configurable & Combinable & Reusable, yeah, just a function mapping.
Usage
this has a koa-router dependency, so, you no longer need to import it. now, you can have a think, every route path as a key and can be splited by /
, that would look like a nested object, and at last it's value just a function.
- Install
npm i @eryue/koa-router-mapping
// or
yarn add @eryue/koa-router-mapping
- Hello, world!
import Koa from 'koa';
import RouterMapping from '@eryue/koa-router-mapping';
const app = new Koa();
const router = new RouterMapping();
router.get(/* prefix */{
'api/greet': 'Hello, world !' // same as `cx => cx.body = 'Hello, world !'`
//...
});
app.use(router.mapRoutes());
app.listen(1234);
curl localhost:1234/api/greet
will responseHello, world !
;
- More
this example is too simple, but that not all.
import RouterMapping from '@eryue/koa-router-mapping';
const router = new RouterMapping();
async function getUserList(cx, next) {
const userList = await cx.service.getUserList();
cx.body = userList;
}
async function getUserInfo(cx, next) {
const userInfo = await cx.service.getUserInfo(id);
cx.body = userInfo;
}
router
.prefix('api')
.get({
user: {
list: getUserList,
'info/:id': getUserInfo
},
order: {
list: [getUserInfo, getOrderList],
'detail/:id': [getUserInfo, getOrderDetail]
}
});
/* 4 router.
'/api/user/list',
'/api/user/info/:id',
'/api/order/list',
'/api/order/detail/:id'
*/
app.use(router.mapRoutes());
this just a
GET
method, others[post/put/patch/del/delete/all
] has a same way to use, as you can see, a nested object and some functions make our routerConfigurable & Combinable & Reusable
.
option
prefix: String
same to router.prefix()
- maxLevel: Number
due to there is a nested object, set maxLevel
to prevent too many api level.
- rebindHandles: Function(handles)
use it carefully, it callback every router's handles, just a function or array of function, so, you can rebind every function or inject some params you want.
if you want to experience the magic of rebindHandles
, let's move way to @eryue/core