Я пытаюсь настроить маршруты expressJS.Как исключить шаблон из expressJS route
app.route(base + '/inventory/adjustments').get(policy.isAllowed, inventoryChangeCtrl.search);
app.route(base + '/inventory/:inventoryId(?!^adjustments$)').get(policy.isAllowed, inventoryCtrl.findById)
Рассмотрим входные данные ../inventory/adjustments
Проблема заключается в том, что в первом маршруте, она соответствует должным образом, но контроллер вызывает next()
который, как предполагается, чтобы провалиться к default route handler
, что я в другом месте установки. Но вместо этого следующий обработчик маршрута также сопоставляется.
Итак, теперь я пытаюсь исключить более конкретные строки из этого обработчика маршрута с помощью регулярного выражения, но теперь он не соответствует правильному вводу, например .../inventory/9039309309
.
Может ли кто-нибудь предложить, как исключить первый маршрут со второго маршрута? (и по-прежнему разрешать следующий вызов для обработчика по умолчанию).
Спасибо.
ты говоришь, что добраться до/инвентаризации/корректировок также согласован с/инвентаре /: inventory_id –
Использовать редирект вместо того, чтобы звонить дальше. – Molda
yes @Dave Briand Второй маршрут также соответствует первому запросу, потому что я вызываю next(). Если первый контроллер возвращает ответ, его не вызывают, конечно, но есть промежуточное ПО по умолчанию, которое все мои ответы должны пройти. –