Ich arbeite an einer einfachen App zur URL-Verkürzung und habe die folgenden Express-Routen:
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
});
}
});
});
Ich möchte das /l/
von meiner Route entfernen (um meine URL zu verkürzen) und den Parameter: key optional machen. Wäre dies der richtige Weg, dies zu tun:
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
});
});
Ich bin mir nicht sicher, ob ich angeben muss, dass meine /
Route diejenige ist, der ich "folgen" möchte. Aber da meine einzige andere Route meine aktualisierte /
Postroute wäre, würde ich mir vorstellen, dass sie gut funktionieren würde.
client.get
. Ich habe einencannot call method 'indexOf' of null
Fehler geworfen .next()
in derelse{}
?Express-Version:
Optionale Parameter sind sehr praktisch. Sie können sie einfach mit express deklarieren und verwenden:
Im obigen Code ist batchNo optional. Express zählt es als optional, da ich nach der URL-Erstellung ein '?' Symbol nach batchNo '/: batchNo?'
Jetzt kann ich nur mit categoryId und productId oder mit allen drei Parametern aufrufen.
quelle