I am working on a simple URL shortening and have the following express routes:
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 ; 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 }); } }); });
I would like to remove /l/ from my route (to reduce my url) and make the: key option optional. Would this be the right way to do this:
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 }); });
Not sure if I need to indicate that my route / is the one that will be "next" to. But since my only other route would be my updated post / route, I would assume that it would work fine.
Qcom Jul 22 '11 at 1:25 2011-07-22 01:25
source share