1.1.10 • Published 4 years ago

@eryue/koa-router-mapping v1.1.10

Weekly downloads
8
License
MIT
Repository
github
Last release
4 years ago

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 response Hello, 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, otherspost/put/patch/del/delete/all has a same way to use, as you can see, a nested object and some functions make our router Configurable & 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

1.1.10

4 years ago

1.1.9

4 years ago

1.1.8

5 years ago

1.1.6

5 years ago

1.1.3

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago