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.
Asked
Active
Viewed 1.3k times
9
-
See the bottom of my answer here: https://stackoverflow.com/a/75308588/10030693 – Gilbert Feb 01 '23 at 10:14
2 Answers
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