0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

zlibjsでGZIP形式で圧縮されて返却されたレスポンスデータを取得

Last updated at Posted at 2023-01-10

APIで返却されるデータが大きすぎてAWSの制限に引っかかってしまう
とのことで、base64でエンコードしたファイルを gzip で固めて返却するから
と言われたので、そこからデータをごにょごにょして取得する方法のメモ

以下のライブラリを使用

パッケージインストール

yarn add zlibjs

インポートする
今回は解凍だけでよいのいで以下のみをインポートした

import { Zlib } from "zlibjs/bin/gunzip.min.js"

処理概要

const res = await axios.get(url, {
  params: {
    compress: 1,
  },
})

const compressed = res.data.compress // 圧縮されたデータが格納されている

// BASE64デコード
const b64Decoded = new Uint8Array(
  [...window.atob(compressed)].map((s) => s.charCodeAt(0))
)

// 圧縮データを展開
const gunzip = new Zlib.Gunzip(b64Decoded)
const decompressed = gunzip.decompress()

// バイナリ(Uint8Array) を文字列に変換
const output = JSON.parse(new TextDecoder().decode(decompressed))
console.log(output)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?