2013-02-21 51 views
1

當使用特快我可以在路由字符串的佔位符,像定義路線:佔位段掛載點

app.get("https://stackoverflow.com/users/:user_id/photos", function(req,res){<blah>}); 

,然後在我的處理程序,我可以用戶req.params["user_id"]得到什麼是在URL並在我的請求中使用它。

可以將中間件安裝在某些路徑上,以便只有匹配該路徑的請求才會使用中間件。我可以在中間件的裝載路徑中使用佔位符嗎?例如,我可以這樣做:

app.use("https://stackoverflow.com/users/:user_id/photos", <middleware>); 

,然後中間件裏面有什麼訪問映射到:user_id段是一些呢?

編輯1:

我知道,我可以直接把中間件在路由聲明,點菜:

app.get("https://stackoverflow.com/users/:user_id/photos", <middleware>, function(req,res){<blah>}); 

它並不需要太多的想象力來看看如何將走出作爲應用程序增長的手。

+1

會把中間件放在一個單獨的app.get路由聲明的第一個工作? – 2013-02-21 13:34:01

+0

的確如此。 – juanpaco 2013-02-21 13:47:46

回答

1

中間件按您添加它們的順序鏈接。

middleware = function(req,res,next){ 
    if(valid(req)) 
    next(); 
    else 
    res.send(400, "Emergerd"); 
} 

// First middleware 
app.get("https://stackoverflow.com/users/:user_id/photos", middleware); 

app.get("https://stackoverflow.com/users/:user_id/photos", function(req,res){ 
    // function after middleware 
}); 
+0

TY!我沒有意識到路線聲明中的匹配不會將後續路線聲明短路。我來自Rails世界。 – juanpaco 2013-02-21 13:48:54