Declarative Express Application Wiring
express-jefferson is a microlibrary for declaratively describing RESTful services.
// main.js
var express = require('express'),
jefferson = require('express-jefferson'),
app = express(),
conf = {
proxies: [
{
name: 'Logger',
init (delegate) {
return (req, res, next) => {
console.log("invoking middleware function");
delegate(req, res, next);
}
}
}
],
params: {
beerId: (req, res, next, id) => {
req.beer = getBeerById();
next();
}
},
routes: {
getBeerList: {
method: 'GET',
path: '/beers',
middleware: [
beerlist.get
send.json
]
},
getBeer: {
method: 'GET',
path: '/beers/:beerId',
middleware: [
send.json
]
}
}
};
jefferson(app, conf);
...
- routes - An map of routes by name. Each object in the map describes an endpoint to be wired. These endpoints must contain an HTTP method, a path, and an array of middleware functions.
- aliases: (optional) - A map of alias-name to handler chain. Routes may use these aliases in lieu of repeated function groups.
- proxies: (optional) - An array of proxy objects invoked around all middleware functions in order. Each proxy object should have an init() function that accepts a delegate middleware function and returns a new middleware function.
- params: (optional) - A map of path-parameter name to resolver functions.
require('express-jefferson/proxies/promise-handler')
This proxy accepts promise-based middleware (middleware that accepts two arguments) and wraps them in a promise chain before invoking next().
- haltCondition (optional) - a predicate function that accepts the request and response. If it returns a truthy value, then the middleware chain will be halted.
require('express-jefferson/proxies/trace-logger')
This proxy logs invocations of middleware using the debug library.
- logger (optional) - the name of the debug logger to use. Default is "jefferson:trace-logger"
$ npm install express-jefferson --save