siren-enrouten

A koa route initialization and configuration module.

Usage no npm install needed!

<script type="module">
  import sirenEnrouten from 'https://cdn.skypack.dev/siren-enrouten';
</script>

README

siren-enrouten

A Route configuration middleware for koa, and this is based on express-enrouten.

======= Build Status

Usage

var koa = require('koa'),
    enrouten = require('siren-enrouten');

var app = koa();
app.use(enrouten(app));

Configuration

Please refer to express-enrouten, except that all middleware should be generators.

Note

If you want to mount the enrouten using middleware like koa-mount, you SHOULD set the mountpath for enrouten, for example:

var app = require('koa'),
    mount = require('koa-mount'),
    enrouten = require('siren-enrouten');

var app = koa();
app.use(mount('/foo', enrouten(app, { mountpath: '/foo' })));

Otherwise, when you use enrouten.url, it will return an unmounted url.

routerOptions

The routerOptions configuration option (optional) allows additional options to be specified on each Router instance created by siren-enrouten. Please refer to siren-router.

app.use(enrouten(app, {
    directory: 'controllers',
    routerOptions: {
        caseSensitive: true
    }
}));

Named Routes

For index and directory configurations there is also support for named routes. When you use named routes by the passed siren-router instance, enrouten will fetch the named routes out and you can get the named url by ctx.enrouten.url or enrouten.url. For example:

var enrouten = require('siren-enrouten');
app.use(enrouten(app));
var enrouten = require('siren-enrouten');

module.exports = function (router) {

    router.get('my-foo', '/foo/:id', function *(next) {
        // ...
    });

    router.get('/my-foo2', '/foo2/:id', function *() {
        this.redirect(this.enrouten.url('my-foo', this.params.id));
        // or this.redirect(enrouten.url(this.app, 'my-foo', this.params.id));
    });
};

Controller Files

Please refer to express-enrouten, except that all middleware should be generators.

Tests

$ npm test

Coverage

$ npm run-script test-cov && open coverage/lcov-report/index.html