muf*_*fel 5 javascript node.js express
我正在使用当前的express 4和node.js 6.x。在我的 Web 应用程序中,我需要执行内部重定向(即从一个路由处理程序重定向到另一个路由处理程序,而不向客户端发送重定向)。这在顶级 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);
Run Code Online (Sandbox Code Playgroud)
如果我打开“ http://localhost:8000/test ”,我会得到正确的输出“toplevel”,并且调试输出会打印“request to /toplevel”。不幸的是,它不适用于“ http://localhost:8000/myrouter/test ”。调试输出打印“request to /myrouter/toplevel”,我得到默认的express 404处理程序的结果。
是否可以将请求从“/myrouter/test”重定向到“/toplevel”而不重定向客户端(即res.redirect()
)?
归档时间: |
|
查看次数: |
1688 次 |
最近记录: |