我定义了以下路线。
基于参数的路线
app.get('/:id',function(req,res){
//Use the req.params.id
});
绝对路线
app.get('/login', function(req,res){
//Render login page
});
从未达到对/ login路由的GET请求,因为express将其与第一个路由(/:id)匹配。我如何共存基于params和绝对路线?
答案 0 :(得分:4)
路线的顺序很重要。
由于你有一个更通用的路线,它会被调用而不是你不那么通用的路线(登录)。
您应该将登录路由放在id路由
之上app.get('/login', function(req,res){
//Render login page
});
app.get('/:id',function(req,res){
//Use the req.params.id
});
答案 1 :(得分:1)
Vsevolod's answer是解决问题的最简单,最有效的方法。但是,为了便于参考,还有另一种方法可以做到:
app.get('/:id', function(req, res, next) {
if (req.params.id === "login") {
return next(); // skip to the next route handler
}
// response code here
});
app.get('/login', function(req, res){
// response code here
});