私はexpressJSルートを設定しようとしています。expressJSルートからパターンを除外する方法
app.route(base + '/inventory/adjustments').get(policy.isAllowed, inventoryChangeCtrl.search);
app.route(base + '/inventory/:inventoryId(?!^adjustments$)').get(policy.isAllowed, inventoryCtrl.findById)
入力に../inventory/adjustments
問題は最初のルートで、それが適切に一致していることですが、コントローラは、他の場所で、私はセットアップdefault route handler
に通って落下することになっているnext()
を呼び出しを考えてみましょう。しかし、代わりに次のルートハンドラもマッチします。
これで、正規表現を使用して特定の文字列をそのルートハンドラから除外しようとしていますが、現在は.../inventory/9039309309
のような正しい入力には一致しません。
誰もが第2ルートから第1ルートを除外する方法を提案できますか? (そして、デフォルトハンドラのためにnextが呼び出されることを許可します)。
ありがとうございました。
を言っているのは、/ /インベントリに一致している: –
使用リダイレクトをinventory_id nextを呼び出す代わりに。 – Molda
はい@Dave Briand next()を呼び出すため、2番目のルートも最初のリクエストと一致しています。最初のコントローラがレスポンスを返す場合はもちろん呼び出されませんが、すべてのレスポンスが通過するデフォルトのミドルウェアがあります。 –