有一个 express
应用程序和两个路由,我如何在访问路由 /bar
时提供路由 /foo
?
app.get("/foo", (req, res) => res.end("Hello World"));
app.get("/bar", (req, res) => /* ??? */);
我不想使用 res.redirect("/foo")
进行重定向,因为那样会更改 url。据我所见connect-middleware
会做这项工作,但它对我的需要来说太复杂了。
我只需要将请求转发到 /foo
路由,并在 /bar
路由下将其提供给客户端。
我怎样才能做到这一点,例如当我在浏览器中打开 /bar
时,我将返回 “Hello World”
?
我也不想要正则表达式解决方案。我想要这样的函数:res.serveUrl("/foo")
。
最佳答案
您也可以编写自己的“重写”引擎。在此示例中,您只需重写 URL 并使用 next()
到达所需的处理程序:
var express = require('express');
var app = express();
app.get('/foo', function (req, res, next) {
req.url = '/bar';
return next();
});
app.get('/bar', function (req, res) {
console.dir(req.url); // /bar
console.dir(req.originalUrl); // /foo
console.dir(req.path); // /bar
console.dir(req.route.path); // /bar
res.send('Hello bar!');
});
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
您仍然可以使用 req.originalUrl
访问原始 url
其他人(express-urlrewrite)也已经想到了这样的中间件。
关于node.js - 使用 express 提供特定的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36028570/