node.js& express:路由器内部请求的内部重定向

时间:2017-02-24 13:29:05

标签: javascript node.js express

我正在使用current express 4和node.js 6.x.在我的Web应用程序中,我需要进行内部重定向(即从一个路由处理程序重定向到另一个路由处理程序,而不向客户端发送重定向)。这在toplevel express或同一路由器内工作,但如果源请求位于路由器中则不行。

请参阅以下最小工作示例:

const express = require("express");
const app = module.exports.app = express();
const router = new express.Router();

app.use("/myrouter", router);

// not working
router.get("/test", (req, res, next) => {
  req.url = "/toplevel";
  next();
});

// working
app.get("/test", (req, res, next) => {
    req.url = "/toplevel";
    next();
});

// debug output
app.use((req, res, next) => {
  console.log(`request to ${req.url}`);
  next();
});

app.get("/toplevel", (req, res) => {
  res.end("toplevel");
});

app.listen(8000);

如果我打开“http://localhost:8000/test”,我得到正确的输出“toplevel”,调试输出打印“request to / toplevel”。不幸的是,它不适用于“http://localhost:8000/myrouter/test”。调试输出打印“请求/ myrouter / toplevel”,我得到默认快速404处理程序的结果。

是否可以将请求从“/ myrouter / test”重定向到“/ toplevel”而无需重定向客户端(即res.redirect())?

0 个答案:

没有答案