0.0.5 • Published 7 years ago

koa-controller-router v0.0.5

Weekly downloads
2
License
ISC
Repository
github
Last release
7 years ago

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