1. ホーム
  2. node.js

[解決済み] Express.js ルーティング: オプションの splat パラメータ?

2023-04-29 18:24:57

質問

以下のようなルートがあります。

app.all('/path/:namedParam/*splat?',function(req,res,next){
  if(!req.params.length){
    // do something when there is no splat
  } else {
    // do something with splat
  }
});

を呼び出すと、これはうまくいきません。 path/foo/bar を呼び出すとルートにヒットしますが、もし path/foo を呼び出すとヒットしません。

オプションの splat パラメータを持つことは可能でしょうか、それともこれを検出するために正規表現を使用しなければなりませんか。

編集 :

を明確にするために、私が達成しようとしている要件は次のとおりです。

  • 最初のパラメータと2番目のパラメータは 必須
  • 最初のパラメータは静的、2番目は名前付きパラメータです。
  • 任意の数の 任意 を追加しても、ルートにヒットすることができます。

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

これは express 4 の /path と /path/foo で動作します。 * の前に ? .

router.get('/path/:id*?', function(req, res, next) {
    res.render('page', { title: req.params.id });
});