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)