如何使Express.js与路径“/1.1.1”和“/ login”区别开来?
我使用以下代码:
app.get('/:x?.:y?.:z?', function(req, res){
...
app.get('/login', function(req, res){
答案 0 :(得分:13)
路线按照添加顺序执行。因此,如果您希望登录路由优先,请先定义它。
否则,如果您想根据路线做出决定,可以从处理程序内部调用next()函数,如下所示:
app.get('/:x?.:y?.:z?', function(req, res, next){ // <== note the 'next' argument
if (!req.params.x && !req.params.y && !req.params.z) {
next(); // pass control to the next route handler
}
...
}
来自Express guide:“对于定义了相同路径的几条路线也是如此,它们将按顺序执行,直到一个不调用next()并决定响应。”