restify-enroute

This module provides configuration driven route installation for restify.
Instead of having to declare routes in code, you can create a confiuration file
like this:
{
"schemaVersion": 1,
"routes": {
"foo": {
"get": {
"source": "./test/etc/fooGet.js"
},
"post": {
"source": "./test/etc/fooPost.js"
},
"put": {
"source": "./test/etc/fooPut.js"
},
"delete": {
"source": "./test/etc/fooDelete.js"
},
"head": {
"source": "./test/etc/fooHead.js"
},
"patch": {
"source": "./test/etc/fooPatch.js"
},
"options": {
"source": "./test/etc/fooOptions.js"
}
},
"bar": {
"get": {
"source": "./test/etc/barGet.js"
},
"post": {
"source": "./test/etc/barPost.js"
}
}
}
}
This declares the route name, http method, and handler file on disk. this
module will install these routes onto a restify server for you. The
corresponding handler file would look like:
module.exports = function handler(req, res, next) {
res.send(200, 'Hello World');
next()
};
API
Synopsis: install(opts, cb)
Installs routes as defined in opts into a restify server, invokes the callback
when done.
opts
: The options object containing
opts.server
The restify server to install the routes on to.[opts.config]
The POJO of the enroute config.[opts.configPath]
The path to the enroute config on disk.
cb
The callback. Returns Error
if there's an error installing the routes.
Note only one of opts.config
or opts.configPath
is needed. The module will
either read in the file from disk, or use a pre-populated POJO.
Example
const enroute = require('restify-enroute');
const restify = require('restify');
const CONFIG = {
schemaVersion: 1,
routes: {
foo: {
get: {
source: './test/etc/fooGet.js'
},
post: {
source: './test/etc/fooPost.js'
},
delete: {
source: './test/etc/fooDelete.js'
},
head: {
source: './test/etc/fooHead.js'
},
}
}
};
const server = restify.createServer();
enroute.install({
config: CONFIG,
server: server
}, function (err) {
if (err) {
console.error('unable to install routes');
} else {
console.log('routes installed');
SERVER.listen(1337);
}
});
Synopsis: validate(opts, cb)
Parse and validate a enroute config. This will verify that the config
is valid and return a POJO with the properties. Note only one of opts.config
or opts.configPath is needed.
opts
The options object containing
[opts.config]
The POJO of the config you want to validate.[opts.configPath]
The path to the config on disk to validate.
cb
The callback f(err, validatedConfig). Returns Error
if there's an- error parsing or validating the config
Example
const enroute = require('restify-enroute');
const CONFIG = {
schemaVersion: 1,
routes: {
foo: {
get: {
source: './test/etc/fooGet.js'
},
post: {
source: './test/etc/fooPost.js'
},
delete: {
source: './test/etc/fooDelete.js'
},
head: {
source: './test/etc/fooHead.js'
},
}
}
};
const server = restify.createServer();
enroute.validate({
config: CONFIG
}, function (err) {
if (err) {
console.error('unable to install routes');
} else {
console.log('config successfully validated');
}
});