如何在express,param和查询中从url获取id似乎不起作用

jyo*_*oti 20 node.js express

我有一个网址,我正在尝试获取id,但它没有工作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      
});
Run Code Online (Sandbox Code Playgroud)

我正在做这样的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;
});
Run Code Online (Sandbox Code Playgroud)

我正在使用

app.use(express.json());
app.use(express.urlencoded());
Run Code Online (Sandbox Code Playgroud)

而不是身体解析器

gre*_*eke 36

您的代码按预期工作:ajax调用指定url: '/test/:uid'放入:uid的内容req.params.uid.

尝试别的东西送:url: '/test/123'req.params.uid将包含123


Sna*_*hot 5

这是一个有效的例子。我将从头开始逐步说明:

express myproject
cd myproject
npm install
Run Code Online (Sandbox Code Playgroud)

打开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);
Run Code Online (Sandbox Code Playgroud)

现在,打开一个新终端,确保您位于myproject目录中,然后输入:

node app.js
Run Code Online (Sandbox Code Playgroud)

现在您可以http://localhost:3000/test/45在本地计算机上访问,您应该看到:

Displaying information for uid 45
Run Code Online (Sandbox Code Playgroud)

如果您不是从本地计算机访问的,请确保更改上面的URL以匹配您的节点应用程序正在运行的任何服务器。

另外,这只是一个简单的例子。通过将路由放置在类似于Express应用程序新安装中的routes目录示例设置文件的文件中,最好组织所有内容。你可以找到像在网络上的这种更详细的例子一个和一个。另外,我在NodeJS in Action一书中看到了关于在Node中组织/重用代码的最佳解释之一。