Отправка запросов с использованием gax ios (или ax ios) - PullRequest
5 голосов
/ 04 марта 2020

В настоящее время я выполняю прием передачи запроса req на целевой URL и отправки ответа на res, например:

const request = require('request');

const destination = request('http://some.url.com');

// pipe req to destination...
const readableA = req.pipe(destination);
readableA.on('end', function () {
    // do optional stuff on end
});

// pipe response to res...
const readableB = readableA.pipe(res);
readableB.on('end', function () {
    // do optional stuff on end
});

Поскольку request сейчас официально объявлен устаревшим (бу ху), возможен ли этот трюк при использовании библиотеки gax ios ? Я думал, что установка responseType: 'stream' в запросе сделает что-то похожее, как описано выше, но, похоже, он не работает.

В некоторых случаях можно использовать gax ios в следующем контексте:

request
.get('https://some.data.com')
.on('error', function(err) {
    console.log(err);
})
.pipe(unzipper.Parse())
.on('entry', myEntryHandlerFunction);

1 Ответ

0 голосов
/ 07 марта 2020

Полагаю, если вы укажете responseType как stream и используете res.data, вы получите поток, который вы можете передать следующим образом

const {request} = require("gaxios");
const fs = require("fs");
const {createGzip} = require("zlib");
const gzip = createGzip();

(async () => {
  const res = await request({
    "url": "https://www.googleapis.com/discovery/v1/apis/",
    "responseType": "stream"
  });
  const fileStream = fs.createWriteStream("./input.json.gz");
  res.data.pipe(gzip).pipe(fileStream);
})();
...