如果我使用准系统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?
答案 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