Как получить идентификатор из 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.

Другие вопросы по тегам