与Node.js RESTIFY URL映射有误解

时间:2013-07-03 15:14:22

标签: node.js url restify

如果我使用准系统echo服务器演示来解决问题,它可以正常工作。但如果我做了下面显示的一些更改,它的行为与我预期的不同:

var restify = require('restify');

function respond(req, res, next) {
  res.send(req.params); //NOTE: should echo back all params
}

var server = restify.createServer();
server.get('/hello/', respond); //NOTE: parameter :name removed

server.listen(8080, function() {
  console.log('%s listening at %s', server.name, server.url);
});

我所做的是从URL中删除名称参数,并在响应函数中回显所有参数。主叫:

http://localhost:8080/hello

返回

{}

但同样如此:

http://localhost:8080/hello?foo=bar

我为什么不在回复中看到foo:bar?

2 个答案:

答案 0 :(得分:0)

网址中问号后面的所有内容都不是params而是query,为了引用它,请使用:req.query
试试这个以回显所有数据。

function respond(req, res, next) {
  res.send({
    params: req.params,
    query: req.query
  });
}

答案 1 :(得分:0)

我在其他帖子中找到了有用的答案。

最终我需要为GET添加这个

server.use(restify.queryParser());

server.use(restify.bodyParser());

用于POST