从外部api获取数据:
var request = http.get('http:...format=json', function(resFromApi) {
if(resFromApi.statusCode !== 200){
res.status(400).send(data);
return;
}
resFromApi.on('data', function(data) {
var test = JSON.parse(data);
res.status(200).send(data);
});
});
request.end();
我使用rest api来使用此服务。如果我在浏览器中运行它,结果将作为文件返回,其中包含json数据。如果我尝试运行JSON.parse(data)
,控制台会给出:
SyntaxError: Unexpected token i
at Object.parse (native)
at IncomingMessage.<anonymous> (/Library/WebServer/Documents/VF/node/server.js:58:25)
at IncomingMessage.emit (events.js:95:17)
at IncomingMessage.<anonymous> (_stream_readable.js:764:14)
at IncomingMessage.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:426:10)
at emitReadable (_stream_readable.js:422:5)
at readableAddChunk (_stream_readable.js:165:9)
at IncomingMessage.Readable.push (_stream_readable.js:127:10)
at HTTPParser.parserOnBody [as onBody] (http.js:142:22)
如果我在我的浏览器中直接粘贴api-url,json数据会按预期显示。
知道如何解决这个问题吗?
答案 0 :(得分:1)
data
事件将返回 chunked 数据,根据数据与缓冲区大小的不同,这些数据通常只包含部分完整响应(因此{{1挥舞着摇摇晃晃)。
在您的情况下,JSON.parse
调用似乎是多余的,因为您只是尝试将数据从一个请求复制到另一个请求。在这种情况下,您可以简单地将pipe数据放入目标流
JSON.parse