Javascript nodejs http.request如何收集数据
我试图在一个方法中调用一个RESTAPI URL,然后使用该响应形成下一个对另一个URL的查询,比如git来查询一些信息。 在发布这篇文章之前,我已经看到了很多例子,在每个人身上,人们只是简单地将响应打印到控制台或将其设置为服务器响应 我尝试过使用async/await,但它只会让整个过程变得非常缓慢。因此,我并不热衷于使用这种方法 我正在进行回调,但我无法收集数据来实际循环它。 以下是我的代码片段:-Javascript nodejs http.request如何收集数据,javascript,node.js,http,callback,http-get,Javascript,Node.js,Http,Callback,Http Get,我试图在一个方法中调用一个RESTAPI URL,然后使用该响应形成下一个对另一个URL的查询,比如git来查询一些信息。 在发布这篇文章之前,我已经看到了很多例子,在每个人身上,人们只是简单地将响应打印到控制台或将其设置为服务器响应 我尝试过使用async/await,但它只会让整个过程变得非常缓慢。因此,我并不热衷于使用这种方法 我正在进行回调,但我无法收集数据来实际循环它。 以下是我的代码片段:- function initialize(path) { // Setting URL
function initialize(path) {
// Setting URL and headers for request
var options = {
url: '',
headers: {
'Accept': '*/*',
'User-Agent' : 'something something',
'Authorization': 'Basic ' + new Buffer(process.env.username + ':' + process.env.password).toString('base64')
},
method: 'GET',
port:443
};
options.url = path;
callback = function(err,response){
var str= "";
response.on('data',function(chunk){
str+=chunk;
});
response.on('end',function(){
return JSON.parse(str);
});
}
http.request(options, callback).end();
}
我从这个方法中调用它
function collectData1(userid){
var url = "example.com/users/user1";
var results = initialize(url);
console.log(results);
return results;
}
但结果总是不确定的
那么,我该怎么做呢?有什么建议吗?我有三种建议
我可以提出三种方法
在请求中添加response.setEncoding('utf8')
http请求在端口80中,https请求在端口443中
提及 修改了代码
在请求中添加response.setEncoding('utf8')
http请求在端口80中,https请求在端口443中
请参阅是否触发了回调函数?现在开始获取此信息<代码>events.js:136抛出器;//未处理的“error”事件^error:connect econnrefered127.0.0.1:80 at Object.\u errnoException(util.js:1031:13)at exceptionWithHostPort(util.js:1052:20)at TCPConnectWrap.afterConnect[as oncomplete](net.js:1195:14)解决了端口问题。我想我要找的是http.request或request.get的一个好例子。我没有找到一个好的例子,结果不会直接返回到html或html模板,而不对数据本身做任何事情。回调函数被触发了吗?现在开始了解这个<代码>events.js:136抛出器;//未处理的“error”事件^error:connect econnrefered127.0.0.1:80 at Object.\u errnoException(util.js:1031:13)at exceptionWithHostPort(util.js:1052:20)at TCPConnectWrap.afterConnect[as oncomplete](net.js:1195:14)解决了端口问题。我想我要找的是http.request或request.get的一个好例子。我还没有找到一个好的例子,结果不能直接返回html或html模板,而不对数据本身做任何事情。你能在这里发布一些示例代码吗?回调
.then()
没有及时返回值供我处理。我一直没有定义,所以我不得不把wait放在任何地方。所以,这是我不想做的,无论我从promise得到什么,我不想把它发送到我的显示器上,我需要处理它,(过滤掉一些值,或者用这个响应来提出我的下一个请求)。您将如何做到这一点?如何在没有异步/等待的情况下使用承诺。你能在这里发布一些示例代码吗?回调.then()
没有及时返回值供我处理。我一直没有定义,所以我不得不把wait放在任何地方。所以,这是我不想做的,无论我从promise得到什么,我不想把它发送到我的显示器上,我需要处理它,(过滤掉一些值,或者用这个响应来提出我的下一个请求)。你会怎么做?使用你建议的代码,我得到了这个错误TypeError[ERR\u INVALID\u ARG\u TYPE]:“chunk”参数必须是string或Buffer类型之一。已接收类型对象
请检查此代码。我已经测试了自己,正在使用您建议的代码,我得到了这个错误TypeError[ERR\u INVALID\u ARG\u TYPE]:“chunk”参数必须是string或Buffer类型之一。已接收类型对象
请检查此代码。我已经测试了自己,正在工作
var http = require('http');
function initialize(path) {
return new Promise(function (resolve, reject) {
// Setting URL and headers for request
var options = {
hostname: "jsonplaceholder.typicode.com",
path: path,
// port:443,
headers: {
'Accept': '*/*',
'User-Agent': 'something something',
'Authorization': 'Basic ' + new Buffer(process.env.username + ':' + process.env.password).toString('base64')
},
method: 'GET',
};
var callback = function (response) {
var str = "";
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
resolve(str);
});
request.on("error", function (error) {
reject(error);
})
};
var request = http.request(options, callback)
request.on("error", function (error) {
reject(error);
});
request.end();
})
}
function collectData(userid) {
var url = "/posts/" + userid;
return initialize(url);
}
http.createServer(function (req, res) {
collectData(1).then(function (data) {
res.write(data);
res.end();
}).catch(function (error) {
res.write(error.message);
res.end();
})
}).listen(8080);
function initialize(path, callback) {
// Setting URL and headers for request
var options = {
host: "example.com"
path: "/users/user1",
headers: {
'Accept': '*/*',
'User-Agent': 'something something',
'Authorization': 'Basic ' + new Buffer(process.env.username + ':' + process.env.password).toString('base64')
},
method: 'GET',
port: 80
};
http.request(options, function (response) {
response.setEncoding('utf8');
var str = "";
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
callback(JSON.parse(str));
});
}).end();
}
function collectData1(userid) {
var url = "example.com/users/user1";
initialize(url, function (result) {
console.log(results);
return results;
});
}