1

使用 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>});

随着应用程序的发展,不难想象这将如何失控。

4

1 回答 1

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
});
于 2013-02-21T13:37:02.057 回答