修改中间件中的请求对象-Node.JS
Modifying request object in middlewares-Node.JS
我的Node.JS应用程序中有一堆中间件,有什么办法可以delete/modifyreq.path
反映在下一个中间件中吗?
如果我的问题含糊不清,您是否需要更多说明,请告诉我?
更新:
甚至 req.path = 'foo'
也没有改变我在那行之后的 req.path!
req.path = "foo";
console.log(req.path);// Here still it shows my original req.path not foo!
谢谢
是的,只需将 .path
更改为您想要的任何内容即可。许多官方的中间件和 API,比如挂载,就是这样做的。请注意,如果您不知道自己在做什么,这很容易破坏很多东西!
是的。只需删除或修改它。它是一个 javascript 对象。
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'));
我的Node.JS应用程序中有一堆中间件,有什么办法可以delete/modifyreq.path
反映在下一个中间件中吗?
如果我的问题含糊不清,您是否需要更多说明,请告诉我?
更新:
甚至 req.path = 'foo'
也没有改变我在那行之后的 req.path!
req.path = "foo";
console.log(req.path);// Here still it shows my original req.path not foo!
谢谢
是的,只需将 .path
更改为您想要的任何内容即可。许多官方的中间件和 API,比如挂载,就是这样做的。请注意,如果您不知道自己在做什么,这很容易破坏很多东西!
是的。只需删除或修改它。它是一个 javascript 对象。
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'));