web-dev-qa-db-ja.com

node.jsエクスプレスリクエストをインターセプトする方法

エクスプレスで、私はいくつかのルートを定義しました

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

クライアントコントローラー内でリクエストを処理する方法を定義しました。コントローラでリクエストを処理する前に、リクエストに対して前処理を行う方法はありますか?特に、アクセスレベルの概念を使用して、API呼び出し元がルートへのアクセスを許可されているかどうかを確認したいと思います。何かアドバイスをいただければ幸いです。

21
user517339

必要なことはいくつかの方法で行うことができます。

これにより、ルーターに到達する前に使用されるミドルウェアが配置されます。ルーターの後に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がミドルウェアチェーンに自動的に追加され、ユーザー定義のミドルウェアよりも優先される場合があります。

55
Ryan Olds