q-io:如何使用 Promises 读取 response.body JSON 对象?
q-io: how to read response.body JSON object using Promises?
我需要从一台服务器向另一台服务器发出 http 请求。
将处理此请求的服务器将只是 return 一个 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()
return是一个缓冲区,只是response.body
不 return 数组(正如文档所说,它 return 是可读流的表示)...我如何正确处理它以正确获取数组 有承诺?
来自文档,https://github.com/kriskowal/q-io#body
看来你必须使用forEach
才能获得所有物品
如果您可以获得对响应正文内容的承诺,则可以通过 JSON.parse
:
从中获得对 JSON 有效负载的承诺
return HTTP.request(request)
.then(function(response) { return response.body.read() })
.then(JSON.parse);
我需要从一台服务器向另一台服务器发出 http 请求。
将处理此请求的服务器将只是 return 一个 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()
return是一个缓冲区,只是response.body
不 return 数组(正如文档所说,它 return 是可读流的表示)...我如何正确处理它以正确获取数组 有承诺?
来自文档,https://github.com/kriskowal/q-io#body
看来你必须使用forEach
才能获得所有物品
如果您可以获得对响应正文内容的承诺,则可以通过 JSON.parse
:
return HTTP.request(request)
.then(function(response) { return response.body.read() })
.then(JSON.parse);