亚马逊广告 API - 下载报告数据并在 NodeJS 中解压缩

Amazon Advertising API - Download Report Data and Unzip in NodeJS

我正在尝试调用亚马逊广告 api 并下载一份广告活动报告,目前已成功完成以下操作:

创建活动报告,获取报告 ID 并使用报告 ID,我能够获取 s3 下载 url。

问题是当我尝试下载数据时 - api 返回的响应应该被压缩 json 并且格式为:

��VJN��-H��L��LQ��2227��45��017������b%+����������< ��+R<

如何从这种压缩格式中提取 json 数据?我搜索并在 SO 上找到了类似的线程:

Why does Amazon Advertising report API return a .bin instead of .json

我也可以使用“发送和下载”选项从邮递员那里获得有效的 json 文件,如本帖中所建议的那样。

但是在nodejs中尝试实现解压代码时卡住了,解析响应数据的代码片段

await axios.get(downloadurl, options)

        .then(async response => {
         console.log(response.data);
        
        // Calling gzip method
        zlib.gzip(response.data, (err, buffer) => {
  
        // Calling unzip method
        zlib.unzip(buffer, (err, buffer) => {
  
       console.log(buffer.toString('utf8'));
       finaldata =  buffer.toString('utf8');
      
     });
 });

// write data to file
 await fsPromises.writeFile('/Users/asbdb/Downloads/test1/test.json', finaldata);
    
        })
        .catch(error => {
            console.log({ error });
        });

任何关于如何以字符串格式解压缩和转换数据的指示都将非常有帮助。

上面的代码片段将其写入输出文件: output in file

使用zlib.gunzip()提取内容。

您拥有的是 gzip 流,而不是 zip 文件,因此 zlib.unzip() 无济于事。 zlib.gzip() 压缩,与提取相反,您正在寻找提取。