javascript - 修改中间件-Node.JS中的请求对象

标签 javascript node.js express middleware

我的 Node.JS 应用程序中有一堆中间件,有什么方法可以删除/修改 req.path 并反射(reflect)在下一个中间件中?

如果我的问题含糊不清,如果您需要更多说明,请告诉我?

更新:

即使 req.path = 'foo' 也不会更改该行之后的我的 req.path!

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

谢谢

最佳答案

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();
  };
}

我使用这个技巧将请求分派(dispatch)到指定版本,如果未指定,则路由到默认版本。这对我有用

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

关于javascript - 修改中间件-Node.JS中的请求对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28933981/

相关文章:

javascript - 根据对象数组过滤对象值

javascript - 使用 Ext.ajax.Request 以非 json 格式提交负载数据

javascript - 按回车键提交表单时使用 Markdown

node.js - Express.js - 在 MongoDB 中找不到记录时显示自定义 404 页面

javascript - 如何在node js服务器的for循环中管理近5000条记录?

javascript - typescript /Knex : Cannot use import statement outside a module

javascript - Promises 传播中间对象(NodeJS + MongoDB)

javascript - 如何有条件地检查对象值是否已设置或等于 smth 并跟踪更改?

javascript - rangeError : Invalid status code: 0 mean? 是什么意思

node.js - Express 4路由器