Как получить идентификатор из URL в Express, Param и запрос не работает
У меня есть URL, я пытаюсь получить идентификатор, но ни один из них не работает ни req.params, ни req.query
app.get('/test/:uid', function testfn(req, res, next) {
debug('uid', req.params.uid); // gives :uid
debug('uid', req.query.uid); // gives undefined
});
Я делаю вызов Ajax, как это
$(document).on('click', 'a.testlink', function(e) {
$.ajax({
type: "GET",
url: '/test/:uid',
success: function(var) {
console.log('success');
},
error: function() {
alert('Error occured');
}
});
return false;
});
я использую
app.use(express.json());
app.use(express.urlencoded());
вместо анализатора тела
2 ответа
Ваш код работает должным образом: ajax
звонок указывает url: '/test/:uid'
что ставит :uid
в req.params.uid
,
Попробуйте отправить что-то еще: url: '/test/123'
а также req.params.uid
будет содержать 123
Вот пример, который будет работать. Я дам пошаговые инструкции с самого начала:
express myproject
cd myproject
npm install
Откройте app.js и добавьте следующее где-нибудь в файле - может быть, прямо перед строкой app.get('/test/:uid',test);
var test = function(req,res,next) {
// do whatever logic is needed
res.end('Displaying information for uid ' + req.params.uid);
}
app.get('/test/:uid',test);
Теперь откройте новый терминал, убедитесь, что вы находитесь в каталоге myproject и введите:
node app.js
Теперь вы можете посетить http://localhost:3000/test/45
на локальной машине и вы должны увидеть:
Displaying information for uid 45
Если вы не осуществляете доступ с локального компьютера, убедитесь, что изменили приведенный выше URL-адрес, чтобы он соответствовал серверу, на котором работает приложение вашего узла.
Кроме того, это всего лишь простой пример. Возможно, вам лучше организовать все, поместив маршруты в файлы, аналогичные настройкам примера каталога маршрутов, в новой установке экспресс-приложения. Вы можете найти более подробные примеры этого в Интернете, как этот и этот. Кроме того, одно из лучших объяснений организации / повторного использования кода в Node, которое я видел, находится в книге NodeJS in Action.