如何在不重定向vanilla Express中的URL的情况下将用户重定向到其他路由?例如,如果我有路线
express = require('express');
app = express();
app.route('/old').get(function(req, res, next) {
res.redirect('/new');
});
app.route('/new').get(function(req, res, next) {
res.send('This is the new route');
});
app.listen(3000);
我将浏览器指向http://localhost:3000/old
,应用程序成功重定向,页面显示为This is the new route
,但网址也已更改为http://localhost:3000/new
。如何让应用程序重定向到new
路由,但保留旧网址(http://localhost:3000/old
)?
我很好安装另一个中间件(就好像我还没有一百万个),但理想情况下,我想在没有额外中间件的情况下这样做。另外,我在Express.js中完全这样做,没有PHP,nginx或其他任何东西。我将在我的应用程序中使用Angular.js,但这似乎更像是服务器端行为,而不是客户端行为。我有时会在客户端进行重定向,但我不想一直这样做。
答案 0 :(得分:11)
而不是重定向,如何使用request module
发送获取请求并进行回调以更新内容。
var request = require('request');
app.route('/old').get(function(req, res, next) {
request.get('/new', function(err, response, body) {
if (!err) {
req.send(body);
}
});
});
答案 1 :(得分:0)
您可以使用两种路线都可以使用的辅助方法:
express = require('express');
app = express();
const newHandler = function(req, res, next) {
res.send('This is the new route');
};
app.route('/old').get(newHandler);
app.route('/new').get(newHandler);
app.listen(3000);
请注意,req.url
在newHandler
内部对于两种不同的路线将有所不同,因此您可能需要处理。
答案 2 :(得分:-1)
试试这个
var request = require('request');
app.get('/old', function(req, res) {
request.get('new', function(err, response, body) {
if (!err) {
res.send(body);
}
});
});