【发布时间】:2016-01-28 18:55:39
【问题描述】:
我需要从一台服务器向另一台服务器发出 http 请求。
处理这个请求的服务器只会返回一个 JSON 对象数组:
app.get('/array', function (req, res) {
console.log('GET request received!');
var response_array = [
{
value: 1234
},
{
value: 1234
},
{
value: 55
}
];
res.send(response_array);
});
我正在使用q-io 将http 请求发送到该GET 方法/array 并获取数组:
var _getArray = function(externalUrl) {
var request = {
method: "GET",
url: externalUrl
};
return HTTP.request(request)
.then(function(response) {
// I need to return the Array inside the body (a Promise) to
// iterate on it later
return response.body.read(); // but .read() returns a Buffer
});
}
两台服务器都能正常工作,因为请求从一个到另一个正确发送和接收,以及响应。
问题我没有实现获取 JSON 数组 - 因为 read() 返回一个 Buffer 而只是 response.body 没有返回数组(正如文档所说,它返回一个可读流的表示)...我怎样才能正确处理这个以正确获取数组with Promises?
【问题讨论】:
-
我觉得你不需要read(),直接用
return response.body -
@ZohaibIjaz 不,它不返回数组,它返回 body Object,正如文档所说,它是 可读流的表示,或者是请求或响应。它被实现为 Q-IO 阅读器。
-
你可能不得不
.read().then(JSON.parse) -
@Bergi 谢谢,这实际上是我想要的,但没有意识到我可以这样说!发布答案,我会将其标记为正确。
-
我不确定它是否有效,因为您说这是对 缓冲区 的承诺,而不是字符串。但也许它被铸造得很好......
标签: javascript node.js http httprequest httpresponse