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.