Skip to content
forked from mikaa123/catnap

Simple Resource-oriented architecture for node

License

Notifications You must be signed in to change notification settings

superbecker/catnap

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Much thanks to cbleslie for the amazing logo!

Logo is licensed under Creative Commons Attribution-NonCommercial

CC NC

About

Simple Resource-oriented architecture for node

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%