Gzip解压缩后请求,axios,Node.JS

f3temu5u  于 2022-11-29  发布在  Node.js
关注(0)|答案(2)|浏览(262)

我正在node.js中使用axios进行post请求。响应是gzip数据(后面是一个巨大的json)
我的目标是读取res(gzip)后面的json文件。
目前,我的要求是:

await axios({
  method: "post",
  url: process.env.API_URL + "/collection",
  headers: {
    "Content-Type": "application/json",
    "Accept-Encoding": "gzip, deflate, br",
  },
  data: {
    project: req.body.project,
    platform: req.body.platform,
  },
  decompress: true,
}).then(async (response) => {
  console.log(response.data);
});

但我收到的数据如下:
第一节:第二节:第一节:第二节:第三节:第四节:第五节:第六节:第七节:第八节:第九节:第七节:第八节:第九节:第八节:第九节:第八节:第九节:第八节:第九节:第九节:第八节:第九节:第九节:第八节:第九节:第八节:第九节:第九节:第八节:第九节:第八节:第九节:第九节:第九节:第八节:第九节:第九节:第九节:第八节:第九节:第八节:第九节:第九节:第八节:第九节:第九节:第八节:第九节:第八节:第九节:第八节:第九节:第八节:第九节:第八节:第九节:第八节:第九节:第八节:第九节:第八节:第九|(a)在香港以外的任何地方; ... span class ='class10 ' %,并在2008年11月28日之前,将其出售.
有人有什么建议吗?谢谢!

eh57zj3b

eh57zj3b1#

在我的例子中,我想获得我的accessToken的信息(从Google提供商),然后我可以发送如下GET请求:

const googleOauth2Url = `https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=${accessToken}`;

const { data } = await axios.get(googleOauth2Url, {
        responseType: "arraybuffer",
        decompress: true,
      });

然后我收到了与您的data类似的data。我调查并发现data是用gzip压缩的,那么要使用它,我们必须解压缩data
现在我使用zlib。

zlib.gunzip(data, function (error, result) {
        console.log(result.toString());
        return result.toString();
      });

而最后的结果是:

{
  "issued_to": "some data,
  "audience": "some data",
  "user_id": "some id",
  "scope": "openid https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile",
  "expires_in": 2971,
  "email": "sample@gmail.com",
  "verified_email": true,
  "access_type": "offline"
}
6jygbczu

6jygbczu2#

现在是2022年,这个答案解决了我的问题,我已经挣扎了2天了。

相关问题