res.end("Hello World"-6ren">
gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 17:07:25 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com