Easy routing in Koajs ES7
$ npm install e.router
const koa = require('koa');
const app = new koa();
const Route = require('e.router')();
Route.get('/', async(ctx, next) => {
ctx.set('test', 'ok');
await next();
}, async ctx => {
ctx.body = '/';
});
Route.head('/', async ctx => {
// Sending headers
ctx.set('test', 'true');
});
Route.get('/user/:id/:photo', async(ctx, next) => {
ctx.body = 'params id: ';
await next();
});
Route.get('/user/:id/:photo', async(ctx) => {
ctx.body += ctx.params.id;
});
app.use(Route.R());
app.listen(3000);
Run Node.js >= 7.0.0
$ node --harmony index
Route.get('/', ...middleware);
Route.post('/', ...middleware);
Route.put('/', ...middleware);
Route.delete('/', ...middleware);
Route.head('/', ...middleware);
Route.other('options', '/', ...middleware);
index.js
...
const users = require('./routes/users');
Route.add('/users/', users);
//or
//Route.add(users); // without a prefix
app.use(Route.R());
app.listen(3000);
routes/users.js
const routes = require('../lib/e.router')();
routes.get('/', async ctx => {
ctx.body = '/users/';
});
routes.get('/:id', async ctx => {
ctx.body = '/users/' + ctx.params.id;
});
routes.get('/:id/photos', async ctx => { // /users/:id/photos
ctx.body = '/users/' + ctx.params.id;
});
module.exports = routes;
app.use(Route.R({cors:{}})); // activate
// or
app.use(Route.R({cors: {Origin: 'example.com', Methods: 'GET', Headers: 'Origin'}}));
Default value
- Access-Control-Allow-Origin: *
- Access-Control-Allow-Methods: GET, POST, PUT, DELETE, HEAD
- Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept