使用Express Routers时,可以提供路由前缀:
var router = new Express.Router();
app.use("/scope", router);
我们说我的路由器中有一些CRUD路由。
router.post("/", function(req, res) {
var result = create(req);
res.redirect(result.id);
});
router.put("/:id", function(req, res) {
var result = update(req);
res.redirect(result.id);
});
router.get("/:id", function(req, res) {
var result = findById(req.params.id);
res.render("show.html", {data: result});
});
当请求上面的PUT时,响应是重定向到“/ scope / [id]”应该是。请求POST时,响应是重定向到“/ [id]”而不是之前的结果。
我不确定在哪里找到问题的根源,也不知道如何纠正它。
答案 0 :(得分:0)
无论如何,我会回答这个问题,为了可能遇到这个问题的其他人的利益。
我怀疑您的原始问题是,因为您已禁用严格模式(Express'默认),您的客户端代码可能会发布到/scope' (which in non-strict node is the same as
/ scope / ). Within your post handler you did a relative redirect using
res.redirect(结果) .ID). Let say
{result.id {1}} {123 {1}} / 123`。
注意:不要忘记Express与实际的重定向关系不大,浏览器会对客户端进行重定向。
通过确保将客户端代码发布到is
,然后相对重定向到, then a relative redirect would take you to
会将您带到/scope/
,就可以轻松解决问题,就像您预期的那样。