71

Express アプリに次のようなルートがあります。

app.get('/:id', function (request, response) {
  …
});

ID は常に数字です。ただし、現時点では、このルートは などの他のものと一致してい/loginます。

私はこれから2つのことを望んでいると思います:

  1. ID が数値の場合にのみこのルートを使用し、
  2. その特定のパラメーターのルートが既に定義されていない場合のみ ( との衝突など/login)。

これはできますか?

4

3 に答える 3

139

マリウスの答えを拡張すると、正規表現とパラメーター名を指定できます。

app.get('/:id(\\d+)/', function (req, res){
  // req.params.id is now defined here for you
});
于 2012-06-29T10:45:36.983 に答える
12

はい、http://expressjs.com/guide/routing.htmlhttps://www.npmjs.com/package/path-to-regexp(エクスプレスで使用)を確認してください。動作する可能性のあるテストされていないバージョンは次のとおりです。

app.get(/^(\d+)$/, function (request, response) {
  var id = request.params[0];
  ...
});
于 2012-06-29T08:34:49.027 に答える
3

以下を使用できます。

// /12345
app.get(/\/([^\/]+)\/?/, function(req, res){
  var id = req.params[0];
  // do something
});

またはこれ:

// /post/12345
app.get(/\/post\/([^\/]+)\/?/, function(req, res){
  var id = req.params[0];
  // do something
});
于 2012-12-29T07:23:26.130 に答える