9

I am using Axios to get the JSON response from the web server. The response is in compressed gzip format. How can I decompress the response and get the Json Data.

Rajat Gupta
  • 109
  • 1
  • 1
  • 5

2 Answers2

9

axios has a decompress option. No need to decompress it manually:

const { data } = await axios.get(url, { responseType: 'arraybuffer', 'decompress': true })

Also, your server should never sent compressed content if your Accept-Encoding header does not contain gzip (or any other compression format).

dennis
  • 91
  • 1
  • 2
  • Axios sends an accept-encoding header of 'gzip, deflate, br' by default because browsers normally decompress the response but that creates problems with node where that's not the case. – Xetera Dec 05 '22 at 01:51
8
const zlib = require('zlib')

let url = "https://example.com/GZ_FILE.gz"

const { data } = await axios.get(url, { responseType: 'arraybuffer' })

zlib.gunzip(data, function (_err, output) {
    console.log(output.toString())
  })
Ario
  • 549
  • 1
  • 8
  • 18