Modifying Express.js Request Object
You can add a custom middleware that sets the property for each request:
app.use(function (req, res, next) {
req.root = req.protocol + '://' + req.get('host') + '/';
next();
});
Using req.get
to obtain the Host
header, which should include the port if it was needed.
Just be sure to add it before:
app.use(app.router);
The best way to modify the request object is to add your own middleware function before the app.router declaration.
app.use(function(req, res, next){
// Edit request object here
req.root = 'Whatever I want';
next();
});
app.use(app.router);
This will modify the request object and every route will be able to access req.root property, so
app.get('/',function(req, res, next){
console.log(req.root); // will print "Whatever I want";
});
You can use a middleware. Add this to your app.configure
block:
app.use(function (req, res, next) {
req.root = 'WHAT YOU WANT';
next();
});
Every request will go tough this function, and afterwards go to the right url-block thanks to next()
.
You can extend the express.request
prototype.