2015-07-18 2 views
7

У меня есть два маршрута в Экспрессе 4.13 приложения:Экспресс параметризованных маршрутного конфликта

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

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

Но когда я пытаюсь получить доступ к /new - Я получаю 404, потому что нет никакого «новый» объекта. Итак, как я могу изменить настройки, чтобы я мог получить доступ/новый маршрут без путаницы с маршрутом /: id.

Спасибо.

ответ

5

Вам нужно добавить функцию для проверки параметров и поместить /new маршрутизатор перед /: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

Большое спасибо. Размещение/новое перед /: id решило мою проблему. Я запомню, что порядок имеет большое значение. –

8

ли это так. Динамический api должен быть на дне

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

router.get('/:id', function (req, res) { 
}); 
Смежные вопросы