如何拦截node.js表达请求

时间:2012-06-14 18:06:10

标签: api node.js express intercept

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

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

我已经定义了如何处理Client控制器内的请求。在我的控制器中处理它们之前,有没有办法对请求进行一些预处理?我特别想要使用访问级别的概念来检查API调用者是否有权访问该路由。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:48)

您可以通过多种方式完成所需的工作。

这将放置一个将在使用路由器之前使用的中间件。确保路由器之后添加了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添加到中间件链,这可能会使其超出用户定义的中间件。