Как добавить пользовательскую маршрутизацию для выражения, когда параметр маршрута имеет определенное значение - PullRequest
0 голосов
/ 08 января 2019

Положение

У меня есть маршрут, который выглядит ниже:

router.get('/api/v1/tokens/:token_name', middleware1, middleware2)

И он прекрасно работает для большинства значений token_name. Теперь я хотел бы добавить обработку для нового значения token_name (скажем, это token_name: baz), но это имеет особое условие и требует другого промежуточного программного обеспечения, назовем его middleware0, запускается до middleware1 и middleware2

Что я пробовал

То, как я справился с этим сейчас, - это добавление другого маршрута, который имеет приоритет над тем, что указан выше, как показано ниже:

router.get('/api/v1/tokens/baz', middleware0, middleware1, middleware2)    
router.get('/api/v1/tokens/:token_name', middleware1, middleware2)

Но теперь у меня нет доступа к переменной token_name в других промежуточных программах, которая необходима им для выполнения своей логики.

Вопрос

Есть ли способ решить эту проблему, используя только экспресс-маршрутизатор, и не добавляя какой-либо код в промежуточное ПО? Мол, чтобы соответствовать определенному значению, но также добавить его в качестве переменной?

1 Ответ

0 голосов
/ 08 января 2019

Вы можете использовать один маршрут с условным исполнением вашего middleware0, что-то вроде ниже

const middleware0 = (req, res, next) => {
  if (req.params.token_name !== 'baz') {
     next();
     return;
  }
  // actual middleware code handling request
};

router.get('/api/v1/tokens/:token_name', middleware0, middleware1, middleware2); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...