mikaa123 / catnap

Simple Resource-oriented architecture for node
MIT License
75 stars 5 forks source link

Catnap NPM version Build Status Coverage Status

Fast and simple Resource-Oriented Architecture for Node.

Catnap allows you to create elegant REST APIs by describing REST Resources.

It takes care of creating and serving these resources for you.

Installing

$ npm install catnap

Getting Started

Catnap lets you describe resources identified by a name and a path. A resource can have one or many representations and responds to actions (get, post, put, patch an delete.) Here is a contrived example:

var cnp = require('catnap');

cnp.resource('user', '/users/:userId')
    .representation(function (user) {
        // The default representation. Returns a full representation of user
        return user;
    })
    .representation('partial', function (user) {
        // A named representation that returns a partial representation
        return pick(user, 'username', 'email');
    })
    .get(function (req, res) {
        // Action methods take standard connect-middlewares.
        User.findOne({ _id: req.params.userId }, function (err, user) {
            user && res.send(200, cnp('user', user));
        });
    })

The representations map internal entities (such as the ones in your database) into media types. To get the representations of the user resource:

cnp('user', user); // => Calls the default representation
cnp('user', 'partial', user); // => Calls the partial representation

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Licencse

MIT

Original logo design by Kyle Decker and their beautiful website http://catnap.co. Much thanks to cbleslie for the port!

cbleslie's logo is licensed under Creative Commons Attribution-NonCommercial

CC NC