You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中使用Axios接收大响应数据分块的实现方法

在Node.js中用Axios分块接收大响应数据

要替代https模块的分块接收逻辑,Axios可以通过流式响应实现相同功能,核心是将responseType设置为'stream',然后监听流的data和end事件,和原生https的处理逻辑一致。

实现代码

const axios = require('axios');
const { Buffer } = require('buffer');

async function fetchLargeData() {
  const chunks = [];

  try {
    const response = await axios({
      method: 'POST', // 和原请求方法保持一致
      url: '你的目标请求URL', // 替换为实际请求地址
      data: postData, // 原请求中的postData参数
      responseType: 'stream', // 关键配置:开启流式响应
      // 可添加原options中的其他配置,比如自定义请求头
      headers: {
        // 示例:'Content-Type': 'application/json'
      }
    });

    // 打印状态码与响应头,对应原代码的逻辑
    console.log('statusCode:', response.status);
    console.log('headers:', response.headers);

    // 监听分块数据,对应原res.on('data')
    response.data.on('data', (d) => {
      chunks.push(d);
    });

    // 监听数据接收完成,对应原res.on('end')
    response.data.on('end', () => {
      const result = JSON.parse(Buffer.concat(chunks).toString());
      console.log(result);
    });

    // 监听流自身的错误
    response.data.on('error', (e) => {
      console.error(e);
    });
  } catch (e) {
    // 处理请求级别的错误,比如连接失败、状态码异常等
    console.error(e);
  }
}

fetchLargeData();

关键说明

  • responseType: 'stream':让Axios返回可读流对象,而非直接将整个响应体加载到内存,完美适配大体积数据场景
  • 流事件逻辑:response.data就是可读流,监听data事件收集分块、end事件完成最终拼接,和原生https的处理逻辑完全对应
  • 错误处理:需同时处理流自身的错误(response.data.on('error'))和Axios请求级别的错误(try-catch块)

内容的提问来源于stack exchange,提问作者Vishal Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 09:53:00