2016-03-12 4 views
0

Я хочу передать параметр на страницу. Но есть 404. Мой код:
app.jsУзел js router 404 с параметрами

var routes = require('./routes/index'); 
var app = express(); 

маршруты/index.js:

var express = require('express'); 
var router = express.Router(); 

router.get('/profile/:id', function (req, res) { 
    var id = req.params.id; 
    console.log(id); 
    res.render('profile', {id: id}); 
}); 

и я попробовать http://localhost:3000/profile?id=56e2c3c2cdde3f64302ac154 но есть ошибка: не найден

ответ

4

Ваш маршрут должен быть выглядит следующим образом:

http://localhost:3000/profile/56e2c3c2cdde3f64302ac154 

Автоматический набор req.params.id.

+0

Спасибо! А можно как-то сделать, чтобы через знак вопроса было? Благодаря! Как я могу использовать 'profile? Id = ...'? – NickDevil

+0

, тогда вы должны использовать другое свойство 'req.query.id' и изменить маршрут маршрута на'/profile' вместо '/ profile /: id' –

2

Существует различие между параметром Path и параметром Query. Url вы определило

/profile/:id 

Говорит рамки маршрутизации, что я ожидал идентификатор как Путь пар т.е. часть пути ресурсов. Но в запросе URL вы сделали

http://localhost:3000/profile?id=56e2c3c2cdde3f64302ac154 

Вы отправляете идентификатор в качестве параметра запроса. Таким образом, структура маршрутизации не знает URL с идентификатором в качестве параметра запроса. Следовательно, он возвращает значение 404, означающее, что «сервер не смог найти то, что было запрошено».

Смежные вопросы