Как получить идентификатор от url в выражении, param и query, похоже, не работает

У меня есть 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());

вместо анализатора тела

Ответ 1

Ваш код работает как ожидалось: вызов ajax указывает url: '/test/:uid', что помещает :uid в req.params.uid.

Попробуйте отправить что-то еще: url: '/test/123' и req.params.uid будет содержать 123

Ответ 2

Вот пример, который будет работать. Я дам пошаговые инструкции с самого начала:

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.

Кроме того, это простой пример. Возможно, вам лучше организовать все, поместив маршруты в файлы, похожие на настройки примера каталогов маршрутов, в новой установке экспресс-приложения. Вы можете найти более подробные примеры этого в Интернете, например this и this. Кроме того, одно из лучших объяснений организации/повторного использования кода в node, которое я видел, находится в книге NodeJS в действии.