Это решение, которое работает для меня.
Я использовал получил вместо axios , потому что я не могузаставить его работать там.
Я установил параметры моего запроса:
const requestOptions = {
encoding: null, // this is important
headers: {
"Accept-Encoding": "gzip",
}
...
};
Не забудьте эту строку encoding: null
, потому что без этого ответ будет автоматически преобразованв строку.(Нам нужен буфер для этой работы)
Затем я создал такую функцию для обработки моего запроса:
const zlib = require("zlib");
async function performRequest(url, options) {
try {
const response = await got(url, options);
if (response.headers["content-encoding"] === "gzip") {
const body = response.body;
try {
const dezziped = zlib.gunzipSync(response.body);
response.body = JSON.parse(dezziped.toString());
} catch (error) {
response.body = body;
}
}
return response.body;
} catch (error) {
return error;
}
}
Примечание: Это синхронная операциявместо этого вы можете использовать gunzip
, если хотите выполнить асинхронный способ.