Node.js忽略除第一个之外的所有查询字符串参数

gav*_*net 4 javascript rest curl node.js query-string

我不能说服Node.js看到我的URL中的第二个参数:

http://localhost:8888/cities?tag=123&date=2013-03-30T10:00:28.000%2B02:00
Run Code Online (Sandbox Code Playgroud)

我使用以下命令启动Node.js服务器:

node --debug ./router_rest.js
Run Code Online (Sandbox Code Playgroud)

我的"router_rest.js"文件中有以下代码:

require("http").createServer(function (req, res) {
  //  For PUT/POST methods, wait until the
  //  complete request body has been read.
  if (req.method==="POST" || req.method==="PUT") {
    var body = "";
    req.on("data", function(data){
      body += data;
    })

    req.on("end", function(){
      return routeCall(req, res, body);
    })

  } else {
    return routeCall(req, res, "");
  }
}).listen(8888);
Run Code Online (Sandbox Code Playgroud)

我从命令行进行以下调用:

curl http://localhost:8888/cities?tag=123&date=2013-03-30T10:00:28.000%2B02:00
Run Code Online (Sandbox Code Playgroud)

当我调试并检查'req'参数时(在上面的匿名函数中),url属性显示为:

/cities?tag=123
Run Code Online (Sandbox Code Playgroud)

我原以为报告的网址是:

/cities?tag=123&date=2013-03-30T10:00:28.000%2B02:00
Run Code Online (Sandbox Code Playgroud)

即使我切换参数,节点仍然只能看到第一个.

为什么最后一个参数(即日期)被截断了?

Jas*_*ith 9

节点很好.

curl命令中的第一个&符号导致shell在后台运行curl.在URL周围添加引号,它将起作用.

curl "http://localhost:8888/cities?tag=123&date=2013-03-30T10:00:28.000%2B02:00"
Run Code Online (Sandbox Code Playgroud)