2

ExpressJSでは、RegExを使用して1つのルートで以下を正しくする方法は?

app.get('/blog', blog.list);
app.get('/blog/p/:page?', blog.list);
4

2 に答える 2

6

ここで正規表現を使用するポイントは何ですか? Express パターンはより単純ですが、正規表現とほぼ同じくらい強力です。

app.get('/blog(?:/p/:page([0-9]+)?)?', blog.list);

このルートは、次のすべての URL に一致します。

  • /blog
  • /blog/
  • /blog/p
  • /blog/p/
  • /blog/p/123

blog.listコントローラーreq.params.pageにはページ番号が含まれるか、指定されていない場合は含まれますundefined

于 2013-07-23T11:17:15.267 に答える
0

これらの個別のルートを作成する説得力のある理由があるようですが、アプリで何をしているのかわかりません。

app.get(/^\/blog(?:\/p\/([0-9]+)?)?/, blog.list);

req.params[0] はルート /blog/p/20 で "20" にする必要があります。req.paramsnullは /blog/p/ または /blog/ と同様ですが、両方を機能ルートとして使用します。

于 2013-07-23T12:05:06.133 に答える