我正在尝试从Node.js应用程序向Rails服务器发送GET请求。目前,我正在使用request
模块:
var request = require("request");
var url = 'www.example.com'
function sendRequest(url){
string = 'http://localhost:3000/my-api-controller?url=' + url;
request.get(string, function(error, response, body){
console.log(body);
});
}
这很有效。但我想要的不是为string
请求构建get
,而是将请求的参数作为javascript对象传递(以类似jQuery的方式)。 request
模块的wiki页面上有one example,它使用了这种语法:
request.get('http://some.server.com/', {
'auth': {
'user': 'username',
'pass': 'password',
'sendImmediately': false
}
});
然而,当我尝试为我的目的调整这种语法时:
function sendRequest(url){
request.get('http://localhost:3000/my-api-controller', {url: url}, function(error, response, body){
console.log(body);
});
}
url
参数未被发送。
所以我的问题是,我在这里做错了还是request
模块不支持将get
请求的参数作为javascript对象传递?如果没有,你能建议一个方便的Node模块吗?
答案 0 :(得分:5)
" HTTP身份验证"您在request
模块中指向的示例不构建查询字符串,它会根据特定选项添加身份验证标头。该页面的another part描述了您想要的内容:
request.get({url: "http://localhost:3000/my-api-controller",
qs: {url: url}},
function(error, response, body){
console.log(body);
});
这样的事情。反过来,这会使用querystring
模块来构建查询字符串,如评论中所述。
答案 1 :(得分:5)
提供给request()
或其convenience methods的对象不仅适用于数据参数。
要在查询字符串中提供{ url: url }
,您需要使用qs
选项。
request.get('http://localhost:3000/my-api-controller', {
qs: { url: url }
}, function(error, response, body){
// ...
});