Provide a convenient mechanism for accessing requests and response. Register and iterate through the registered middlewares on request. When the last registered middleware is resolved, the passed route as argument is called.
Part of Esrol
$ npm install --save esrol-middlewares
Node Version |
---|
>= 4.x |
'use strict';
'use strict';
const http = require('http');
const Middlewares = require ('esrol-middlewares');
const middlewares = new Middlewares();
middlewares.registerMiddleware({
priority: 1,
middleware: function(req, res, next){
// some code
req.iterator++;
console.log ('step 1');
next();
}
});
middlewares.registerMiddleware({
priority: 2,
middleware: function(req, res, next) {
// some code
setTimeout(() => {
// some code
req.iterator++;
console.log ('step 2');
next();
}, 1000);
}
});
middlewares.registerMiddleware({
priority: 3,
middleware: function(req, res, next) {
// some code
req.iterator++;
console.log ('step 3');
next();
}
});
const router = {
route: function(req, res) {
console.log ('Request passed through %s middlewares', req.iterator);
res.end();
}
};
http.createServer((req, res) => {
req.iterator = 0;
middlewares.onRequest(req, res, router.route, router);
}).listen(3333);
console.log('Server is listening on port: 3333');
Please see the docs here, for information how to use middlewares
array
Register middleware
mixed
Call this method when you need to pass the request through the middleware
Register middleware
Returns: array
- this._queue
- registered middlewares
Throws:
error
catchAndConsoleLogThisErrorForMoreInfo - throws error when incorrect arguments are passed
Param | Type | Description |
---|---|---|
middleware | object |
{priority: 1, onRequest: function(req, res, next)} |
Call this method when you need to pass the request through the middleware
Returns: mixed
- value - the returned value from the last middleware
Scope: object
scope - set scope for route param
Param | Type | Description |
---|---|---|
req | object |
http(s) request |
res | object |
http(s) response |
route | function |
the function which will be called when all middlewares are resolved |
Any contribution will be highly appreciated. Just make sure that:
- Your code works.
- You have 100% successful tests coverage.
- You have comments in your code.
- Follows eslint config. Exceptions are possible where that make sense.
To run the test suite, first install the dependencies, then run npm test
:
$ npm install
$ npm test