casper

Helpers and handlers for building APIs in express.

casper

Helpers and handlers for building (jsonp) APIs in Express.

All caspers methods return a function that can be used in the Express callback chain, or as callbacks for your database.

The following examples assume this:

// express 'app' available 
var casper = require('casper');

Send an empty opject:

// res.jsonp({}) is sent 
app.get('/', casper.noop());

Or return some custom data:

// res.jsonp({ hello: 'world' }) is sent 
app.get('/', casper.noop({
  hello: 'world'
}));

casper.db returns a function to be used as a database callback. It assumes the first argument is an err and the second is the data is has to send – an array or an object.

It takes Express' req and res as arguments:

casper.db(req, res)

For example:

app.get('/', function (reqres) {
  YourModel
    .find()
    .exec(casper.db(req, res));
});

It can also take a callback which, if present, is called instead of sending data directly back to the client.

With a callback:

app.get('/', function (reqres) {
  YourModel
    .find()
    .exec(casper.db(req, res, function (errdata) {
      // Do something with data 
    }));
});

If it is passed an error, it will pass that on to the client with a 500 status code. If it recieves no data, or an empty array, it will return the data it recieved with a 404 status.

Check for the presence of data in the body using a key:

// body is { testKey: "Hello" } 
// calls next() becuase present 
app.get('/',
        casper.check.body('testKey'),
        casper.noop());

If the data is missing from the body it sends a 400 error, detailing the missing parameter:

app.get('/',
        casper.check.body('nonExistantKey'),
        casper.noop());
 
// results in 
res.jsonp(400, { error: 'Missing nonExistantKey from body.' });

Remove a key from the body:

// body is { testKey: "Hello", otherKey: "World" } 
app.get('/',
        casper.rm('testKey'),
        casper.noop());
 
// afterwards body is { otherKey: "World" } 

Whitelist a key or array of keys allowed on the body.

// body is { testKey: "Hello", otherKey: "World" } 
app.get('/',
        casper.allow.body('otherKey'),
        casper.noop());
 
// afterwards body is { test: "Hello" } 

With an array:

// body is { testKey: "Hello", otherKey: "World", unwantedKey: "World" } 
app.get('/',
        casper.allow.body(['testKey', 'otherKey']),
        casper.noop());
 
// afterwards body is { testKey: "Hello", otherKey: "World" } 

npm install casper

MIT