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.
$ npm install catnap
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
- To get started, check out the Getting Started Guide
- For a concrete example, have a look at Implementing a simple API
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
MIT
Much thanks to cbleslie for the amazing logo!
Logo is licensed under Creative Commons Attribution-NonCommercial