在中间件-Mode.JS中修改请求对象

时间:2015-03-09 01:31:00

标签: javascript node.js express middleware

我的Node.JS应用程序中有一堆中间件,有没有办法删除/修改req.path并反映在下一个中间件中?

如果我的问题含糊不清,请告诉我是否需要更多澄清?

更新:

偶数req.path = 'foo'在该行之后没有改变我的req.path!

req.path = "foo";
console.log(req.path);// Here still it shows my original req.path not foo!

由于

3 个答案:

答案 0 :(得分:1)

function requestDispatcher() {
  //default version was set to v1
  var defaultVersion = 'v1',
    re = /\/v\d/;
  return function(request, response, next) {
    var version = request.get('version');
    debug(request.url);
    // test if request.url has already contained version number
    if (!re.test(request.url)) {
      // if not define version number in http header then set default version
      // otherwise use the version number in the http header
      if (version === null || version === undefined) {
        request.url = ['/', defaultVersion, request.url].join('');
      } else {
        request.url = ['/', version, request.url].join('');
      }
    }
    debug(request.url);
    next();
  };
}

我使用此技巧将请求分派给指定版本,如果未指定,则路由到默认版本。这项工作对我来说

app.use(requestDispatcher());
app.use('/v1', require('./v1'));
app.use('/v2', require('./v2'));

答案 1 :(得分:-1)

是的,只需将.path更改为您想要的任何内容即可。许多官方中间件和API,例如安装,都是这样做的。请注意,如果你不知道自己在做什么,这很容易打破很多东西!

答案 2 :(得分:-1)

是肯定的。只需删除或修改它。它是一个javascript对象。