28

在快递中,我定义了一些路线

app.post("/api/v1/client", Client.create);
app.get("/api/v1/client", Client.get);
...

我已经定义了如何在客户端控制器中处理请求。在我的控制器中处理请求之前,有没有办法可以对请求进行一些预处理?我特别想使用访问级别的概念检查 API 调用者是否有权访问路由。任何意见,将不胜感激。

4

1 回答 1

64

你可以通过几种方式做你需要的事情。

这将放置一个中间件,该中间件将在到达路由器之前使用。确保路由器添加app.use()后。中间件顺序很重要。

app.use(function(req, res, next) {
  // Put some preprocessing here.
  next();
});
app.use(app.router);

您还可以使用路由中间件。

var someFunction = function(req, res, next) {
  // Put the preprocessing here.
  next();
};
app.post("/api/v1/client", someFunction, Client.create);

这将为该路线执行预处理步骤。

注意:确保您的app.use()调用在您的路由定义之前。定义路由会自动将 app.router 添加到中间件链中,这可能会将其置于用户定义的中间件之前。

于 2012-06-14T18:13:59.073 回答