在下面的代码中,我希望获得能够点击URL的功能:localhost:3000/verify
,localhost: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");
});
答案 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;
});