Using koa-router with configure.
- Support controller path config.
- Multi http method.
- Response redirect.
- Multiple route middleware.
- Nestable routers.
- ES7 async/await support.
Install using npm:
npm install koa-router-config
- koa-router-config
- ConfigRouter
- new ConfigRouter([opts])
-
instance
- .router ⇒
router
- .configRoute(configOpts, routesConfig) ⇒
router
- .router ⇒
- ConfigRouter
Kind: Exported class
Kind: Exported koa-router instance
- configOpts ⇒
Object
- controllerRoot: String, path of controller root.
- routesConfig ⇒
Array or Object
- Array: {RouteConfig, ...}
- Object: {url1: RouteConfig, url2: RouteConfig, ...}
- RouteConfig ⇒
any
- String: Controller name or redirect url.
- Array: [middleware1, middleware2, ..., middlewaren, controller]
- Object: { url, method, middlewares, controller, redirect }
directories
├── controllers/
│ ├── home.js
│ ├── api/
│ ├── user.js
├── routes/
│ ├── api.js
│ ├── index.js
├── server.js
controllers/home.js
module.exports = {
get: ctx => {
ctx.render('home')
}
}
controllers/api/user.js
module.exports = {
get: ctx => {
ctx.body = { id: ctx.params.id }
}
}
routes/index.js
const ConfigRouter = require('koa-router-config').ConfigRouter;
const configRoute = new ConfigRouter();
configRouter.config(
{ controllerRoot: path.resolve(__dirname, '../controllers') },
{
'/': 'home.get', // default method: 'GET'
'get /github': 'http://www.github.com', // response redirect
'get|post /logHeader': ctx => ctx.body = ctx.headers, // multi method
'/api': require('./api') // nestable router
}
);
module.exports = configRouter.router; // export koa-router instance
routes/api.js
const ConfigRouter = require('koa-router-config').ConfigRouter;
const configRouter = new ConfigRouter();
configRouter.config(
{ controllerRoot: path.resolve(__dirname, '../controllers/api') },
[
{
url: '/'
controller: ctx => ctx.body = 'Hello API!',
},
{
url: '/users/:id', // support http methods: 'GET' & 'POST',
middlewares: [ctx => console.log('get user:' + ctx.params.id)],
controller: 'user.get'
},
{
url: 'post /auth', // support http methods: 'GET' & 'POST'
redirect: 'https://github.com/login'
}
]
);
module.exports = configRouter.router; // export koa-router instance
server.js
const Koa = require('koa')
const app = new Koa()
const router = require('./routes')
...
app.use(router.routes())
app.use(router.allowedMethods())
...