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 (req, res) {
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 (req, res) {
YourModel
.find()
.exec(casper.db(req, res, function (err, data) {
// 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