2015-07-18 14 views
7

Ho due percorsi in veloce 4.13 applicazione:express percorso parametrizzato conflitto

router.get('/:id', function (req, res) { 
}); 

router.get('/new', function(req,res){ 
}); 

Ma quando sto cercando di accedere /new - ricevo 404, perché non c'è nessun oggetto 'nuova'. Quindi, come posso cambiare il set up a cui posso accedere/nuovo itinerario senza confusione con /: id route.

Grazie.

risposta

5

è necessario aggiungere una funzione per controllare il parametro e inserire /new router prima /:id:

var express = require('express'), 
    app = express(), 
    r = express.Router(); 

r.param('id', function(req, res, next, id) { 
    req.id_from_param = id; 
    next(); 
}); 

r.get("/new", function(req, res) { 
    res.send('some new'); 
}); 

// route to trigger the capture 
r.get('/:id', function (req, res) { 
    res.send("ID: " + req.id_from_param); 
}) 

app.use(r); 

app.listen(3000, function() { }) 
+1

Grazie mille. Inserimento/nuovo prima /: id risolto il mio problema. Ricorderò che l'ordine ha molto senso. –

8

fare in questo modo. Api dinamico dovrebbe essere in fondo

router.get('/new', function(req,res){ 
}); 

router.get('/:id', function (req, res) { 
});