Node.js 使用express提供特定url
有一个Node.js 使用express提供特定url,node.js,http,express,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。从我所看到的情况来看,我可以做这项工作,但它太复杂了,无法满足我的需要 我只需要将请求转发到/foo路由,然后通过/bar
express
应用程序和两条路线,当访问路线/bar
时,如何为路线/foo
提供服务
app.get("/foo", (req, res) => res.end("Hello World"));
app.get("/bar", (req, res) => /* ??? */);
我不想使用res.redirect(“/foo”)
重定向,因为这样会更改url。从我所看到的情况来看,我可以做这项工作,但它太复杂了,无法满足我的需要
我只需要将请求转发到/foo
路由,然后通过/bar
路由将其送达客户端
我如何才能做到这一点,例如当我在浏览器中打开/bar
时,我将返回“Hello World”
我也不想要正则表达式解决方案。我想要一个这样的函数:
res.serveUrl(“/foo”)
您只需创建处理函数并在两个路径中使用它
function handleFooAndBar (req, res, next) {
res.send('Hello World!');
}
app.get("/foo", handleFooAndBar);
app.get("/bar", handleFooAndBar);
您还可以编写自己的“重写”引擎。在本例中,您只需重写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
其他人()也已经想到了这样的中间件。这是另一种解决方案,但我真的想在请求路由时提供另一条路由。您所说的提供另一条路由是什么意思?我的解决方案将为/bar和/foo提供“Hello World!”。这不是您想要的吗?我知道这会起作用,但我需要的是将请求转发到另一个路由,并将响应发送到请求的路由,而不需要为响应提供服务的函数引用。我需要类似于
serverponse(req,res,“/myurl to service”)
的东西。该url在handleFooAndBar和req.url中可用,因此它与您的ServerResponseyes完全相同,但假设在另一个文件中我有app.get(“/bar”,…)
,在这里我想提供一个随机路由,而不需要引用该函数。