同じ機能を探しているときにこの質問に出くわしました。
上記のコメントで述べた@Jonathan Ongは、パスに配列を使用することは非推奨ですが、Express 4では明示的に説明されており、Express 3.xでも機能します。試してみる例を次に示します。
app.get(
['/test', '/alternative', '/barcus*', '/farcus/:farcus/', '/hoop(|la|lapoo|lul)/poo'],
function ( request, response ) {
}
);
request
オブジェクト内から、次のパスで/hooplul/poo?bandle=froo&bandle=pee&bof=blarg
:
"route": {
"keys": [
{
"optional": false,
"name": "farcus"
}
],
"callbacks": [
null
],
"params": [
null,
null,
"lul"
],
"regexp": {},
"path": [
"/test",
"/alternative",
"/barcus*",
"/farcus/:farcus/",
"/hoop(|la|lapoo|lul)/poo"
],
"method": "get"
},
paramsで何が発生するかに注意してください。現在のリクエストで使用されているかどうかに関係なく、可能なすべてのパスのキャプチャグループとparamsが認識されます。
そのため、配列を介して複数のパスを積み重ねることは簡単にできますが、パラメーターまたはキャプチャグループを介して使用されたパスから何か有用なものを取得することを期待している場合、副作用はおそらく予測できません。おそらく冗長性/エイリアシングの方が便利ですが、その場合は非常にうまく機能します。
編集:以下の @ c24wの回答も参照してください。
編集2:これは中程度の人気の答えです。ほとんどのNode.jsライブラリと同様に、ExpressJSは移動可能なごちそうであることを覚えておいてください。上記のルーティングは引き続き機能しますが(現時点では非常に便利な機能を使用しています)、リクエストオブジェクトの出力を保証することはできません(これまでに説明したものとは異なります)。慎重にテストして、目的の結果が得られることを確認してください。