node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

kaio

kaio Version Badge

build status dependency status dev dependency status license

npm badge

A minimalist middleware to get started faster with Koa.

Installation

npm install kaio --save

Example

Requirements

mkdir kaio-app
cd kaio-app
npm install kaio koa-router
touch app.js
// app.js 
 
var kaio = require('kaio');
var router = require('koa-router');
 
kaio()
    .setRoot(__dirname)
    .setHost('127.0.0.1')
    .setPort(3000)
    .setUri('/api')
    .bind('/', BaseController)
    .bind('/books', BookController)
    .listen();
 
function *BaseController(next) {
    yield next;
 
    if (this.res.statusCode === 200)
        return;
 
    this.body = 'Hello world!';
}
 
function BookController() {
    var dataset = [
        { title: "The Fellowship of the Ring", author: "J. R. R. Tolkien", publication: "1954-07-29" },
        { title: "The Two Towers", author: "J. R. R. Tolkien", publication: "1954-11-11" },
        { title: "The Return of the King", author: "J. R. R. Tolkien", publication: "1955-10-20" }
    ];
 
    var list = function *(next) {
        var res = dataset;
 
        yield next;
        this.body = res;
    };
 
    var show = function *(next) {
        var title = decodeURI(this.params.title);
        var res = dataset.filter(function(x) {
            return title === x.title;
        }).shift();
 
        yield next;
        this.body = res;
    };
 
    return router()
        .get('/', list)
        .get('/:title', show)
        .middleware();
}

Run the application

$ KO_PORT=1333 DEBUG=* node --harmony app.js

Test it

# 3000 is the default port but it is overriden by KO_PORT (1333)
 
$ curl http://localhost:1333/api/
Not found
 
$ curl http://localhost:1333/api/
Hello world!
 
$ curl http://localhost:1333/api/books
[{"title":"The Fellowship of the Ring","author":"J. R. R. Tolkien","publication":"1954-07-29"},{"title":"The Two Towers","author":"J. R. R. Tolkien","publication":"1954-11-11"},{"title":"The Return of the King","author":"J. R. R. Tolkien","publication":"1955-10-20"}]
 
$ curl http://localhost:1333/api/books/The%2520Two%2520Towers
{"title":"The Two Towers","author":"J. R. R. Tolkien","publication":"1954-11-11"}

API

API documentation

Tests

npm test

Release History

  • 0.5.0 Use confectioner module, add tests and upgrade public API
  • 0.3.0 Replace custom resolver by dotresolver
  • 0.1.0 Initial release

Credits

License

MIT