14

以下:

app.get('/foo/start/:start/end/:end', blah.someFunc);

マッチ

/foo/start/1/end/4

しかし、オプションのパラメーターにも一致させたい

/foo/start/1/end/4/optional/7

私はこれを試しました:

app.get('/foo/start/:start/end/:end(/optional/:value)?', blah.someFunc);

ただし、上記の 2 つの例のいずれとも一致しません。RegExp何か他のものを期待しているときに、それを与えようとしているからだと思いますか?

ありがとう。

4

4 に答える 4

22

このように、既存のルールの前に別のルールを追加してみませんか?

app.get('/foo/start/:start/end/:end/optional/:value', blah.someFunc);
app.get('/foo/start/:start/end/:end', blah.someFunc);

オプション値のないものの前に使用されます。

1行だけを使用したい場合は、これを試してください:

app.get('/foo/start/:start/end/:end/optional?', blah.someFunc)

例については、ドキュメントを参照してください。

于 2013-09-04T16:23:42.567 に答える
19

Express 4.x を使用している場合は、ルートに配列形式を使用する方がよいと思います。たとえば、/serviceすべてのサービスリストを提供するルートがあり、id を使用すると同じルートがパラメーターに id/service/id/:idを持つ単一のサービスを提供します。

app.get(['/service', '/service/id/:id'], function(req, res) {});
于 2016-12-08T14:52:15.053 に答える