2.1.1 • Published 10 years ago

express-jefferson v2.1.1

Weekly downloads
2
License
Apache
Repository
github
Last release
10 years ago

Build Status Test Coverage Code Climate Dependency Status devDependency Status

NPM

express-jefferson

Declarative Express Application Wiring

express-jefferson is a library for declaratively describing RESTful services and configuring express apps.

// main.js
var express = require('express'),
    jefferson = require('express-jefferson'),
    app = express(),    
    conf = {
        proxies: [logInvocations, resolvePromises],
        pre: {
            safe: [markReadOnly],
            unsafe: [authenticate]
        },
        post: {
            all: [addHaetoasLinks, transmitResponse]
        },
        params: {
            beerId: getBeerById,
            userId: getUserById
        },
        routes: {
            '/beers': {
                get: [getBeerList, send.json]
                post: [createBeer, send.json]
            },
            '/beers/:beerId': 
                get: [send.json]
                put: [editBeer, send.json]
            }
        }
    };
    
jefferson(app, conf);

Configuration

  • routes - (required) - A map of routes by route path. Each object in the map contains a map of method to middleware function array.
routes: {
    {
        '/my-path': {
            get: [getThings, send]
            past: [makeThing, send]
        },
        '/my-path/:id': {
            get: [getThing, send]
        }
    }
}
  • aliases: (optional) - A map of alias-name to handler chain. Routes may use these aliases in lieu of repeated function groups.
aliases: {
    'processAndTransmit': [deletePassword, addHateoasLinks, transmitEntity]
},
routes: {
    '/users/:id': {
        get: [getUser, 'processAndTransmit']
    }
}
  • pre: (optional) - (object) Boilerplate section of pre-middleware functions (see below)
  • post: (optional) - (object) Boilerplate section of post-middleware functions (see below)
  • proxies: (optional) - An array of proxy objects invoked around all middleware functions in order. (see below)
  • params: (optional) - A map of path-parameter name to resolver functions.
params: {
    userId: (req, res, next) => {
        req.user = userStore.findUser(req.params.userId);
        next();
    }
}
routes: {
    '/users/:userId': {
        get: [(req, res, next) => res.send(req.user)]
    }
}
enable: ['trust proxy', 'etag']
disable: ['trust proxy', 'etag']
  • engines: (optional) - An map of template rendering engines. { <extension>: <engineFunction> }
engines: {
    'jade': require('jade').__express
}
locals: {
    'a': true
}
settings: {
    'a': true
}

###Boilerplate Config Sections (pre/post):

  • all: (optional) - An array of middleware to be applied to all endpoints.
  • safe: (optional) - An array of middleware to be applied to all safe endpoints (GET, HEAD, OPTIONS).
  • unsafe: (optional) - An array of middleware to be applied to all unsafe endpoints (not GET, HEAD, OPTIONS).
  • method: (optional, object) - On object of method-name to handler list.
pre: {
    all: [trackInvocation],
    unsafe: [authenticate],
    method: {
        get: [markRequestReadOnly]
    }
}

###Proxy Definition:

  • name: - The name of the proxy.
  • init: - A function that accepts a middleware function, augments it, and returns the augmented proxy.
  • conf: (optional) - A configuration object that is passed to the proxy init function.
{
    name: 'Logger',
    init (delegate) {
        return (req, res, next) => {
            console.log("invoking middleware function");
            delegate(req, res, next);
        }
    }
}

Proxies provided in Jefferson

Promise-Based Middleware Proxy

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().

Config Options:

  • haltCondition (optional) - a predicate function that accepts the request and response. If it returns a truthy value, then the middleware chain will be halted.

Trace Logger Middleware Proxy

require('express-jefferson/proxies/trace-logger')

This proxy logs invocations of middleware using the debug library.

Config Options:

  • logger (optional) - the name of the debug logger to use. Default is "jefferson:trace-logger"
2.1.1

10 years ago

2.1.0

10 years ago

2.0.0

10 years ago

1.4.0

10 years ago

1.3.0

10 years ago

1.2.5

10 years ago

1.2.4

10 years ago

1.1.4

10 years ago

1.1.3

10 years ago

1.1.2

10 years ago

1.1.1

10 years ago

1.1.0

10 years ago

1.0.0

10 years ago