nodejs expressjs路由,参数回调未触发

时间:2015-10-15 19:31:13

标签: javascript node.js express

在下面的代码中,我希望获得能够点击URL的功能:localhost:3000/verifylocalhost:3000/verify/<value>localhost:3000/verify?hmac=<value>

但是,使用此代码,唯一有效的是中间选项。我做错了什么让这个路由以我期望的方式工作?

app.get('/', function (req, res) {

  res.send('Hello World!');
});



//add parameter routing
app.param('hmac', function(req, res, next, hmacvalue) {

    console.log("HMAC route hit " + hmacvalue);
    return next();

});

app.get('/verify/:hmac',function(req,res,next) {
    console.log("I'm in the verify route");
});

2 个答案:

答案 0 :(得分:0)

这是因为没有定义符合您要查找的标准的路线。路线/verify/:hmac与路线/verify不同。前者正在搜索期望值代替:hmac的模式。

尝试以下

app.get('/verify',function(req, res, next) {
    console.log("I'm in the /verify route!");
    console.log(req.query.hmac + " I am the /verify?hmac=<>!");
});

请考虑阅读Express路线文档:http://expressjs.com/guide/routing.html

答案 1 :(得分:0)

路由/verify/:hmac仅匹配格式为localhost:3000/verify/<value>的网址。

如果要捕获所有网址,则必须为其添加路由

app.get('/verify', function(req, res, next) {

    if ( req.query && req.query.hmac ) {
        console.log( 'localhost:3000/verify?hmac=<value>' );

        var hmac = req.query.hmac;
    } else {
        console.log('localhost:3000/verify');
    }
});

app.get('/verify/:hmac', function(req, res, next) {
    var hmac = req.params.hmac;
});