Skip to content

Commit

Permalink
Merge pull request #21 from ph0bos/correlation-id
Browse files Browse the repository at this point in the history
Add correlation header to responses
  • Loading branch information
ph0bos committed Apr 9, 2016
2 parents 8af8b9b + 53ce304 commit 2922b8f
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 12 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,3 +92,4 @@ app.use(micro([options]));
- `controllersPath`: `String` Path to load controllers. Defaults to `controllers`.
- `monitorsPath`: `String` Path to load monitors. Defaults to `monitors`.
- `partialResponseQuery`: `String` The query parameter to use for partial reponse. Defaults to `fields`.
- `correlationHeaderName`: `String` The name of your correlation header. Defaults to `X-CorrelationID`.
21 changes: 11 additions & 10 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,16 +45,17 @@ var buildOptions = function(options) {
var config = konfig({ path: options.configPath || process.cwd() + '/config' });

// Default options
options.server = options.server || { port: process.env.PORT };
options.debug = options.debug || false;
options.discoverable = options.discoverable || false;
options.monitorsPath = options.monitorsPath || 'monitors';
options.controllersPath = options.controllersPath || 'controllers';
options.callerPath = path.dirname(caller(2));
options.serviceName = pkgInfo.name;
options.serviceBasePath = 'services';
options.zookeeper = { connectionString: 'localhost:2181', retry: { count: 5 } };
options.partialResponseQuery = options.partialResponseQuery || 'fields';
options.server = options.server || { port: process.env.PORT };
options.debug = options.debug || false;
options.discoverable = options.discoverable || false;
options.monitorsPath = options.monitorsPath || 'monitors';
options.controllersPath = options.controllersPath || 'controllers';
options.callerPath = path.dirname(caller(2));
options.serviceName = pkgInfo.name;
options.serviceBasePath = 'services';
options.zookeeper = { connectionString: 'localhost:2181', retry: { count: 5 } };
options.partialResponseQuery = options.partialResponseQuery || 'fields';
options.correlationHeaderName = options.correlationHeaderName || 'X-CorrelationID';

// Return now if we have no config
if (!config.app) {
Expand Down
6 changes: 5 additions & 1 deletion lib/bootstrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ var cache = require('express-cache-response-directive');
var zoologist = require('./zoologist');
var log = require('./logger');
var partialRes = require('express-partial-response');
var validator = require('express-validator')
var validator = require('express-validator');
var correlate = require('./middleware/correlate');

/**
* Bootstrap the microservice.
Expand All @@ -26,6 +27,9 @@ module.exports = function (app, options) {
// Enable CORS
app.use(cors({ preflightContinue: true }));

// Correlation
app.use(correlate(options.headerName));

// Setup Cache Control
app.use(cache());

Expand Down
20 changes: 20 additions & 0 deletions lib/middleware/correlate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
'use strict';

var uuid = require('node-uuid');

/**
* Correlation Header Middleware
*
* @param options
*/
module.exports = function (options) {
options = options || {};

var CORRELATION_ID_HEADER = options.correlationHeaderName || 'X-CorrelationID';

return function (req, res, next) {
var id = (req.header(CORRELATION_ID_HEADER)) ? req.header(CORRELATION_ID_HEADER) : uuid.v4();
res.header(CORRELATION_ID_HEADER, id);
next();
};
};
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "express-microservice-starter",
"version": "0.5.15",
"version": "0.5.16",
"description": "An express-based Node.js API bootstrapping module for microservices.",
"main": "index.js",
"scripts": {
Expand Down Expand Up @@ -37,6 +37,7 @@
"express-validator": "^2.18.0",
"ip": "^0.3.2",
"konfig": "^0.2.1",
"node-uuid": "^1.4.7",
"optional": "^0.1.3",
"vitalsigns": "^0.4.3",
"zoologist": "^0.4.14"
Expand Down

0 comments on commit 2922b8f

Please sign in to comment.