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

如何用Node.js发送JSON文件并批量发起HTTP POST请求?

解决方案:使用request模块批量发送JSON数组中的POST请求

别担心问题浅显,这是很常见的开发需求,我来帮你一步步实现~

首先,你需要完成几个关键步骤:读取本地的data.json文件、解析JSON数组,然后遍历数组为每个元素单独发起POST请求。另外要注意,原来的代码用了form参数,这会发送表单格式的数据,而我们需要发送JSON格式,所以要调整请求配置。

完整实现代码

var fs = require('fs');
var request = require('request');

// 设置请求头,注意Content-Type要改为JSON格式对应的类型
var headers = {
  'Content-Type': 'application/json',
  'x-authorization': 'stuff' // 替换为你的实际授权值
};

// 读取本地的data.json文件
fs.readFile('./data.json', 'utf8', function(readError, data) {
  if (readError) {
    console.error('读取文件出错:', readError);
    return;
  }

  // 解析JSON字符串为JavaScript数组
  try {
    const users = JSON.parse(data);
    
    // 遍历数组中的每个用户对象,逐个发起POST请求
    users.forEach(function(user, index) {
      // 配置单个请求的选项
      var options = {
        url: 'http://localhost:8080/users/add',
        method: 'POST',
        headers: headers,
        json: user // 使用json参数,request会自动序列化数据并设置正确请求头
      };

      // 发起请求
      request(options, function(requestError, response, body) {
        if (requestError) {
          console.error(`发送第${index+1}个用户数据出错:`, requestError);
          return;
        }
        if (response.statusCode === 200) {
          console.log(`第${index+1}个用户数据发送成功,响应内容:`, body);
        } else {
          console.log(`第${index+1}个用户数据发送失败,状态码:`, response.statusCode);
        }
      });
    });
  } catch(parseError) {
    console.error('解析JSON格式出错:', parseError);
  }
});

关键细节说明

  • 文件读取与解析:用fs.readFile异步读取本地JSON文件,并用JSON.parse转换为可操作的数组,同时加入try-catch捕获解析错误,避免格式问题导致程序崩溃。
  • 请求格式调整:把原来的form参数换成json,request模块会自动帮你完成JSON序列化,同时自动设置Content-Type: application/json请求头,比手动处理更可靠。
  • 遍历与错误处理:通过forEach遍历用户数组,为每个元素单独发起请求,同时增加了文件读取、请求发送的错误处理,方便你排查过程中出现的问题。

如果你的后端支持批量提交(一次性发送整个数组),也可以直接把整个users数组作为json的值发送,但根据你的需求,上面的代码完全满足“每个元素单独发起POST请求”的要求。

内容的提问来源于stack exchange,提问作者Ryan Swanson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:23:12