Как настроить маршрут с множественным выбором в приложении Express? - PullRequest
0 голосов
/ 16 апреля 2019

Я определил маршрут в своем экспресс-приложении следующим образом:

app.get('/ts/:space/:mode/:param1/:param2/:fromdate/:todate',(req,res,next) =>{...})

Но теперь я хотел бы добавить дополнительные параметры, если параметр :space равен определенному значению.Например, если :space равно blah, то маршрут должен преобразоваться в

app.get('/ts/:space/:mode/:param1/:param2/:param3/:fromdate/:todate',(req,res,next) =>{...})

Возможно ли это без жесткого кодирования ключевого слова blah и указания жестко закодированного пути перед общим?

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Разделите ваши функции обработчика, чтобы изолировать функции.

app.get('/ts/:space/:mode/:param1/:param2/:fromdate/:todate', handler1)

app.get('/ts/:space/:mode/:param1/:param2/:param3/:fromdate/:todate', handler2)

и трюк для handler1 особый случай:

const handler1 = (req,res,next) => {
  if (req.params.space === "blah") {
    // use hanler for `/ts/:space/:mode/:param1/:param2/:param3/:fromdate/:todate` route
    // force set param3 value,
    req.params['param3'] = "maybe_a_default_value";
    return handler2(req,res,next);
  }
  // handler for `/ts/:space/:mode/:param1/:param2/:fromdate/:todate` route
}

const handler2 = (req,res,next) => {
  // handler for `/ts/:space/:mode/:param1/:param2/:param3/:fromdate/:todate`
  // now, req.params.space === "blah" and req.params.param3 === "maybe_a_default_value" 
}
0 голосов
/ 16 апреля 2019

Добавление дополнительного параметра отображает его как новый отдельный маршрут, поэтому я думаю, что выполнение перенаправления на этот новый маршрут всякий раз, когда вы встречаете :space = blah, должно удовлетворить ваше требование.

res.redirect ()

Добавлен код в соответствии с запросом OP

app.get('/ts/:space/:mode/:param1/:param2/:fromdate/:todate', (req, res, next) => {
  let param3 = 'sample';
  if (req.params.space === 'blaah') {
    res.redirect(`/ts/${req.params.space}/${req.params.mode}/${req.params.param1}/${req.params.param2}/${param3}/${req.params.fromdate}/${req.params.todate}`);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...