ExpressJS - 使用基于参数的路线和绝对路线

时间:2015-10-06 12:30:40

标签: node.js express url-routing

我定义了以下路线。

基于参数的路线

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和绝对路线?

2 个答案:

答案 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
});