请求路径正在改变GET参数?

时间:2015-10-15 18:54:32

标签: node.js express

我对expressjs有一个非常奇怪的问题,req.originalUrl会自动更改!。

要从客户端获取参数,我将代码设置为服务器中的风箱

create_new.js

router.get("/addItem", function(req, res, next) {

    objId = mongoose.Types.ObjectId();
    //1. check valid itemNumber
    res.render('addItem.ejs', {
        data: keyPair.public,
        title: "addItem",
        itemNumber: objId
    });
});

router.get("/addItem/:itemNumber", function(req, res, next) {
    console.log("from create_new :", req.params.itemNumber);
    var _id = req.params.itemNumber;
    var objId;
    //1. check valid itemNumber
    if (items.has(_id)) {
        objId = _id;
    } else {
        objId = mongoose.Types.ObjectId();
    }

    //console.log(items.has(_id));
    //console.log(req.originalUrl);
    //console.log(req.baseUrl);
    //console.log(req.path);

    res.render('addItem.ejs', {
        data: keyPair.public,
        title: "addItem",
        itemNumber: objId
    });
});

但是生成视图,而不是css和javascript库的正确路径,它会自动添加“createNewShop”作为请求的前缀。

应该看起来像那样

GET /addItem/123/ 200 46.454 ms - -
GET /addItem/public/css/navbar.css 304 32.544 ms - -
GET /addItem/public/css/shop.css 304 65.018 ms - -
....

但实际上它变成了

GET /createNewShop/addItem/123/ 200 39.646 ms - -
GET /createNewShop/addItem/public/css/navbar.css 304 31.533 ms - -
GET /createNewShop/addItem/public/css/shop.css 304 46.826 ms - -
....

我在主app.js中的代码

app.use('/createnewshop',create_new);

让一些人帮助我理解为什么以及如何解决它 非常感谢提前

1 个答案:

答案 0 :(得分:0)

问题的出现是因为误解了客户端请求的绝对路径和相对路径之间的差异。 在客户端,如果您使用相对路径

("../somePath/someCssFiles)

Expressjs会在任何请求之前自动添加子文件夹。 要修复它,请尝试使用绝对路径

,而不是使用相对路径
("/correctPath/correctSourceFile.css")

将解决上述问题