Я работаю над простым сокращением URL-адресов и имею следующие экспресс-маршруты:
app.get('/', function(req, res){
  res.render('index', {
    link: null
  });
});
app.post('/', function(req, res){
  function makeRandom(){
    var text = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    for( var i=0; i < 3 /*y u looking at me <33??*/; i++ )
      text += possible.charAt(Math.floor(Math.random() * possible.length));
    return text;
  }
  var url = req.body.user.url;
  var key = makeRandom();
  client.set(key, url);
  var link = 'http://50.22.248.74/l/' + key;
  res.render('index', {
    link: link
  });
  console.log(url);
  console.log(key);
});
app.get('/l/:key', function(req, res){
  client.get(req.params.key, function(err, reply){
    if(client.get(reply)){
      res.redirect(reply);
    }
    else{
      res.render('index', {
        link: null
      });
    }
  });
});
Я хотел бы удалить /l/ из моего маршрута (чтобы уменьшить свой url) и сделать необязательным параметр: key. Будет ли это правильным способом сделать это:
app.get('/:key?', function(req, res, next){
  client.get(req.params.key, function(err, reply){
    if(client.get(reply)){
      res.redirect(reply);
    }
    else{
      next();
    }
  });
});
app.get('/', function(req, res){
  res.render('index, {
    link: null
  });
});
Не уверен, что мне нужно указать, что мой маршрут / - это тот, который будет "рядом" с. Но поскольку моим единственным другим маршрутом был бы мой обновленный маршрут post /, я бы предположил, что он будет работать нормально.