使用Express时,我可以在路径字符串中定义带占位符的路径,例如:
app.get("/users/:user_id/photos", function(req,res){<blah>});
然后在我的处理程序中,我可以使用req.params["user_id"]
来获取URL中的内容并在我的请求中使用它。
中间件可以安装在某些路径上,这样只有匹配该路径的请求才会使用中间件。我可以在中间件的挂载路径中使用占位符吗?例如,我可以这样做:
app.use("/users/:user_id/photos", <middleware>);
然后在中间件内部有一些方法来访问映射到:user_id
的段是什么?
编辑1:
我知道我可以将中间件直接放在路由声明中,àla:
app.get("/users/:user_id/photos", <middleware>, function(req,res){<blah>});
当应用程序增长时,看到这种情况会失控,这并不需要太多的想象力。
答案 0 :(得分:1)
中间件按照添加顺序链接。
middleware = function(req,res,next){
if(valid(req))
next();
else
res.send(400, "Emergerd");
}
// First middleware
app.get("/users/:user_id/photos", middleware);
app.get("/users/:user_id/photos", function(req,res){
// function after middleware
});