koa-controller-router

0.0.5 • Public • Published

koa-controller-router

Router middleware extended from koa-router for koa 1.x

Installation

Install using npm:

npm install koa-controller-router

Usage example

Create controller

// app/controllers/ArticleController.js
 
class ArticleController {
    *list() {
        // some code
    }
    
    *show() {
        // some code
    }
    
    *create() {
        // some code
    }
 
    *update() {
        // some code
    }
 
    *destroy() {
        // some code
    }
}
 
module.exports = ArticleController;

Create routes

Without middleware:

// index.js
const path = require('path');
const Koa = require('koa');
const Router = require('koa-controller-router');
 
const app = new Koa();
const router = new Router({
  controllersPath: path.resolve(__dirname, 'app', 'controllers') // default value is /path/to/project/controllers/
});
 
router.get('/', function *() {
    // some code
});
 
router.get('/api/v1/articles', 'ArticleController@list');
router.get('/api/v1/articles/:id', 'ArticleController@show');
router.post('/api/v1/articles', 'ArticleController@create');
router.put('/api/v1/articles/:id', 'ArticleController@update');
router.patch('/api/v1/articles/:id', 'ArticleController@update');
router.del('/api/v1/articles', 'ArticleController@destroy');
 
app.use(router.routes());
app.use(router.allowedMethods());
 
app.listen(3000);

With middleware:

const authMiddleware = function *(next) {
    // auth check
    
    yield next;
};
 
const isAdminMiddleware = function *(next) {
    // check user role
    
    yield next;
};
 
router.post('/api/v1/articles', authMiddleware, 'ArticleController@create');
router.put('/api/v1/articles/:id', authMiddleware, 'ArticleController@update');
router.patch('/api/v1/articles/:id', authMiddleware, 'ArticleController@update');
router.del('/api/v1/articles', authMiddleware, isAdminMiddleware, 'ArticleController@destroy');

Licence

MIT

Package Sidebar

Install

npm i koa-controller-router

Weekly Downloads

1

Version

0.0.5

License

ISC

Last publish

Collaborators

  • noobikz0r