发送带有参数 Node.js 的 http get 请求
Send an http get request with parameters in Node.js
我正在尝试从 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);
});
}
这行得通。但我想要的不是为 get
请求构建 string
,而是将请求的参数作为 javascript 对象传递(以 jQuery 类方式). request
模块的维基页面上有 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 模块?
您在 request
模块中指向的 "HTTP Authentication" 示例不会构建查询字符串,它会根据特定选项添加身份验证 headers。该页面的 another part 描述了您想要的内容:
request.get({url: "http://localhost:3000/my-api-controller",
qs: {url: url}},
function(error, response, body){
console.log(body);
});
类似的东西。这反过来又使用 querystring
模块来构建查询字符串,如评论中所述。
提供给 request()
or its convenience methods 的对象不仅仅用于数据参数。
要在查询字符串中提供要发送的 { url: url }
,您需要使用 qs
选项。
request.get('http://localhost:3000/my-api-controller', {
qs: { url: url }
}, function(error, response, body){
// ...
});
我正在尝试从 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);
});
}
这行得通。但我想要的不是为 get
请求构建 string
,而是将请求的参数作为 javascript 对象传递(以 jQuery 类方式). request
模块的维基页面上有 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 模块?
您在 request
模块中指向的 "HTTP Authentication" 示例不会构建查询字符串,它会根据特定选项添加身份验证 headers。该页面的 another part 描述了您想要的内容:
request.get({url: "http://localhost:3000/my-api-controller",
qs: {url: url}},
function(error, response, body){
console.log(body);
});
类似的东西。这反过来又使用 querystring
模块来构建查询字符串,如评论中所述。
提供给 request()
or its convenience methods 的对象不仅仅用于数据参数。
要在查询字符串中提供要发送的 { url: url }
,您需要使用 qs
选项。
request.get('http://localhost:3000/my-api-controller', {
qs: { url: url }
}, function(error, response, body){
// ...
});