如何在 NodeJS 中解析外部提交的 gzip 数据 api

How to parse gzipped data in NodeJS submitted by external api

外部 API 向我的 postback_url 发送一个 POST 请求,其结果以 gzip 格式压缩。这是我在 body 参数中得到的。顺便说一句,我缩短了输出,因为它是一个很长的字符串。

body: 'H4sIAAAAAAAAA+z963bbuLIwir4Kk/5mYi1LDEndpVby6WrLtny3bDnulcGrRIsSZZK62dEY3xPsP+cdzivsMc7P/Sj7SU4VQFIkRTl2OumevWZmz1gkCBSAQqFuKABPb2eqZevm+G3pLcfyrMAJPJcXim+Tb21HdKb2F9lU1LclgYP/+Wkj1bbFPiS/PRmykNXRRyoFkBEKjK3KmCibtvO2BIUc0R4inOkY3nnvXbUs01p/f1v6/PRWVxBKgcvwGS6dyuTzQorjcrkUVp4SBEUuFCU1Vygq39k8rshvNs9S7anhBNo3EZ0BNOftLI3VqNYEfvqm2TdUeDCtvjjW5be02V/6qgOPA2dkwM+LWv5H8q0iOuLb0tNbcaJDs9watOlYduhABCDb2HC/clv94iwnmLRuhiGO+1PorYuJt+oYEofqcm5aiE3VUEfq2DEtZgKZGGmqG4pqkeb34fPT3dspNKCt3GHX77yC8Ha3pejd2xXWasoittbDfyEDmJwASiVRHn6ZWgbAHjjOxC7dfbj74Eyl+aRYzN3nWHWhylNHTUHf2amdUkXbSfGsOBIfzbE4t1nZHN19gIe7D4oGf2TRMBDk2wB0ij4P6Yo602XsuKLaQ8dEVJpATW/n+lgx5/bblTfChMJegpgohgHrijkS9bE/FNjKbUiIHQ9osupSIc6wFFdIcRmG50tcuiSkmV0kE8imO+ooOFPIO2n3hNAzTyGFoFx6UNhMtpBNZ7K3HkGW3v7+RjFl7A+DCR9/x78MASqbE7Vy9/buLXnFLPCGA0bGy5YH6khkAQV3Hy5U0ZIH5wSF9ik0A8pgHyG/Or57C0BVUfn4+0h1REYeiJatOvDp6rKVKuBXmm6OHcA1pJuW3tehGDMWR1ilpWrACJCqNrJWx5KwdzUedO61y/YN1xDEjJg7Pq0+nLaze+JicV7VWwX+5vJ+/0B4OMw00/vzdLfVyajiQa1//viYydaPT52ckBGnymx3vn9yMNeq1Wa1Wq3p6vJgJo+MsXi

如何解压缩它们并将它们转换为 JSON 格式?我尝试使用给定的代码 https://nodejs.org/api/zlib.html 但失败了。我将非常感谢一些示例 easy-to-understand 代码或任何参考资料。

如果它是 base64 中的 gzip,那么你可以像这样解码它。

const zlib = require('zlib');

const buffer = Buffer.from(data, 'base64');

zlib.unzip(buffer, { finishFlush: zlib.constants.Z_SYNC_FLUSH }, (err, buffer) => {
    if (err) {
      console.error('An error occurred:', err);
    }
    console.log(JSON.parse(buffer.toString()));
});