2

次のようなリクエストがアプリに届きます。

POST /?post%2F5125504547b49d91b2000001 200 53ms - 9.35kb

エンコードされていない場合は次のようになります。

POST /?post/5125504547b49d91b2000001 200 53ms - 9.35kb

私の質問は、高速ルートでこれをキャプチャする方法ですか?

私は次のことを試しました:

app.all "/?post/:id",

app.all "/?post%2F:id",

何か案は?

4

2 に答える 2

2

ルート パスの定義は正規表現であるため、特殊文字である疑問符をダブル エスケープする必要があります。

app.all "/\\?post%2F:id"
于 2013-03-14T19:31:03.710 に答える
1

ミドルウェアを使用してURLを操作して「通常の」ものに戻すことをお勧めします。これにより、エクスプレスと同じようにルーティングして応答できるようになります。

たぶん、この擬似コードのようなもの:

  app.use(function (req, res, next) {
    if (req.originalUrl.match(/^\/(\?post)/))
      req.url = req.originalUrl = req.originalUrl.replace('%2F', '/').replace('/?','/');
    next();
  });
于 2013-03-14T18:48:15.597 に答える