1. ホーム
  2. node.js

[解決済み] ExpressJSで特定のルートに対して複数のミドルウェアを連結する方法

2023-05-07 04:27:35

質問

検証したいことがあるのですが、Express のドキュメントやオンラインではこれに関する情報を見つけることができません (機能であることは知っていますが)。

私はこれをテストすることができますが、適切なテンプレートがないため、コミュニティから意見を聞きたいと思います。

expressでこのようにルートを定義すると。

app.get('/', function (req, res) {
  res.send('GET request to homepage');
});

のように、ミドルウェアを定義して直接読み込むこともできますね。

middleware = function(req, res){
  res.send('GET request to homepage');
});

app.get('/', middleware)

しかし、これらのルートの少なくとも1つをチェーンして、このように認証などの余分なミドルウェアを実行することもできますね。

app.get('/', middleware, function (req, res) {
  res.send('GET request to homepage');
});

これらは無限にチェーン可能ですか?もし望むなら、与えられたルートに10個のミドルウェア関数を貼り付けることができるでしょうか?app.getが受け取ることができるパラメータを見たいのですが、前述のようにdocsでそれを見つけることができません。

どのように解決するのですか?

無限に"とは書いていませんが、複数のミドルウェア関数( "コールバック" と呼ばれる) ここで :

<ブロッククオート

router.METHOD(path, [コールバック, ...] コールバック)

...

複数のコールバックを提供することができます ただし、これらのコールバックは残りのルートコールバックを迂回するために next('route') を呼び出すことができます。このメカニズムを使用して、ルートで事前条件を実行し、マッチしたルートを続行する理由がないときに後続のルートに制御を渡すことができます。

見てわかるように、ミドルウェア関数と一般的にリクエストを処理する関数(通常はリストに追加された最後の関数)の間には区別がありません。

10個あっても問題ないはずです(本当に必要なら)。