Обработка «сырых данных» в Node.js и передача данных в конечную точку Node Express - PullRequest
0 голосов
/ 28 мая 2019

Я делаю вызов API, чтобы получить файл с помощью axios:

   async function getData() {
    const config = {}; // { responseType: 'stream'};
    const { data } = await axios.get(URL, config);

    console.log(data);
    return data;
   }

Когда я пытаюсь распечатать результат моего HTTP-запроса, я получаю кучу чепухи (похоже, какой-то типнеобработанные данные) - снимок экрана здесь:

...
�nG��p���1�l�ՓA�zw:/F�  �@LJW>
��⟿_��̠����������=�|�d�s_���A�GԢ������ 
...

Я хочу передать эти данные (файл изображения или видео) тому, кто достигает конечной точки моего сервера Node Express - Как я должен это сделать?Я прочитал что-то об использовании потока, а затем направить его в ответ.

   router.get("/file", async(res,res) => {
       const file = await getFile();

       //const stream = fs.createReadStream(file)
       //res.pipe(stream)
   })

Однако моя проблема в том, что я не знаю, как обращаться с данными, которые я получаю в первую очередь от API.Я попытался изменить responseType axios на stream (по умолчанию: json), который возвращает мне объект, но также не уверен, как его обработать.

Редактировать - Попытка 1:

 async function getData() {
    const config = { responseType: 'stream'};
    const { data } = await axios.get(URL, config);

    console.log(data);
    return data;
   }

   router.get("/file", async(res,res) => {
       const file = await getFile();

       file.pipe(res);
   })

1 Ответ

1 голос
/ 28 мая 2019

Если responseType является потоком, axios преобразуется в объект ответа, у которого свойство data является потоком, который можно передать в ответ:

 const file = await getFile();
 file.data.pipe(/*to*/ res);
...