我需要从一台服务器向另一台服务器发出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
向GET方法/array
发送http请求并获得数组:
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()
返回一个缓冲区,而response.body
不返回数组(正如文档所说的,它返回一个可读流的表示).如何正确地处理这一问题以正确地获得和承诺
发布于 2016-01-28 11:41:29
如果可以获得响应主体内容的承诺,则可以通过JSON.parse
传递JSON有效负载。
return HTTP.request(request)
.then(function(response) { return response.body.read() })
.then(JSON.parse);
发布于 2016-01-28 11:08:11
从医生那里,https://github.com/kriskowal/q-io#body
似乎您必须使用forEach
来获取所有的项目
https://stackoverflow.com/questions/35069699
复制