node.js - 使用 express 提供特定的 url

标签 node.js http express

有一个 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/

相关文章:

javascript - Grunt 多次连接 JS 文件

java - 在 java 中解析 HTTP JSONObject 响应

javascript - 如何双重查询两个 Mongoose 值?

node.js - 我需要为要接受数组的get创建url,如何在node.js/express中从请求中提取数组?

node.js - Node.js 中具有唯一随机标记的 URL

node.js - grunt 异步函数的 Node 替代方案

c# - 如何使用 curl 将参数 POST 到 WCF 服务

python - Flask 和传输编码 : chunked

javascript - joi_1.default.validate 不是函数

node.js - 使用 Jest 进行单元测试 Inquirer