我正在尝试在Express JS 4中进行URL重写.我读到的所有内容都说我应该能够覆盖中间件中的request.url属性.重写的两个现有Node模块使用此方法.但是,当我尝试这样做时:
app.use('/foo', function(req, res){
var old_url = req.url;
req.url = '/bar';
console.log('foo: ' + old_url + ' -> ' + req.url);
});
app.get('/bar', function(req, res) {
console.log('bar: ' + req.url);
});
Run Code Online (Sandbox Code Playgroud)
它只是不起作用.
一个可能有用的注释:看起来req.url上面总是/与使用的实际URL无关.Express 4是否更改了URL的维护方式,而不是更新文档?如何在Express 4中完成URL重写?
如果您希望在更改后继续处理,则必须调用next()中间件以使处理继续进行其他处理程序.
app.use('/foo', function(req, res, next){
var old_url = req.url;
req.url = '/bar';
console.log('foo: ' + old_url + ' -> ' + req.url);
next();
});
Run Code Online (Sandbox Code Playgroud)
这个属性很像req.url; 但是,它保留了原始请求URL,允许您自由重写req.url以进行内部路由.例如,app.use()的"安装"功能将重写req.url以去除挂载点.
这肯定意味着您可以更改req.url以更改路由.
相关回答:使用node.js重写url路径
| 归档时间: |
|
| 查看次数: |
9205 次 |
| 最近记录: |