ExpressJS - 同时使用基于参数的路由和绝对路由
ExpressJS - Using both parameter based route and absolute route
我定义了以下路由。
基于参数的路由
app.get('/:id',function(req,res){
//Use the req.params.id
});
绝对路线
app.get('/login', function(req,res){
//Render login page
});
对 /login 路由的 GET 请求永远不会到达,因为 express 将它与第一条路由 (/:id) 匹配。我如何共存基于参数的路由和绝对路由?
路线的顺序很重要。
由于您先有一条更通用的路由,因此它会被调用,而不是您不太通用的路由(登录)。
你应该把登录路由放在id路由上面
app.get('/login', function(req,res){
//Render login page
});
app.get('/:id',function(req,res){
//Use the req.params.id
});
是解决问题最简单高效的方法。但是,为了参考,您还可以使用另一种方法:
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
});
我定义了以下路由。
基于参数的路由
app.get('/:id',function(req,res){
//Use the req.params.id
});
绝对路线
app.get('/login', function(req,res){
//Render login page
});
对 /login 路由的 GET 请求永远不会到达,因为 express 将它与第一条路由 (/:id) 匹配。我如何共存基于参数的路由和绝对路由?
路线的顺序很重要。
由于您先有一条更通用的路由,因此它会被调用,而不是您不太通用的路由(登录)。
你应该把登录路由放在id路由上面
app.get('/login', function(req,res){
//Render login page
});
app.get('/:id',function(req,res){
//Use the req.params.id
});
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
});