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

在node-fetch中如何单次请求同时发送三个数据对象

问题原因
  • JSON.stringify仅第一个入参为待序列化的目标数据,你直接传入三个逗号分隔的对象,后两个会被识别为无效的序列化配置参数被忽略,所以最终只会发送第一个用户对象。
  • 注意先确认你调用的API是否支持批量创建用户的接口,如果API本身仅支持单次创建一个用户,你需要调整为多次请求,或按API要求的批量请求格式构造数据。
修正后的代码(适配支持接收用户数组作为批量请求体的接口)
import fetch from 'node-fetch';
const baseUrl = "https://test";
const apiToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVsdfsCJ9.eyJodHRwczovL2d0bWh1Yi5jb20vYXBwX21ldGFkYXRhL2FjY291bnRJZCI6IjYxNDQ0YTEwZjdmZmUxMDAwMsdfsfWY3NWI2NiIsImlhdCI6MTYzMTg2NTM2MSwic3ViIjoiZ29vZ2xlLW9hdXRoMnwxMTUwNjc3Nzc1NzMzMsdfTQxMDk5sdfMjgifQ.0zZZS1ixt1srNU-XcEcUqoaJep0H64-YRInCCbUi6_8";
const accountId = "61444a1ad2r0f7213fsdfsffe10001f75b66";

const options = {
  method: "POST",
  headers: {
    Authorization: `Bearer ${apiToken}`,
    "gtmhub-accountid": accountId,
    "Content-type": "application/json; charset=UTF-8",
    Accept: "application/json, text/plain, */*",
  },
  // 把三个用户对象包装成数组作为序列化入参
  body: JSON.stringify([
    {
      email: "behn_jones@okrs.tech",
      firstName: "Behn",
      lastName: "Johnes",
      userName: "test",
    },
    {
      email: "amy_wrent@okrs.tech",
      firstName: "Amy",
      lastName: "Wrent",
      userName: "test",
    },
    {
      email: "jake_nordon@okrs.tech",
      firstName: "Jake",
      lastName: "Nordon",
      userName: "test",
    }
  ]),
};


const createUser = (url, settings) => {
  return fetch(`${url}/users`, settings)
    .then((response) => response.text())
    .then((data) => console.log(data))
    .catch((error) => {
      console.log(error.message);
    });
};

createUser(baseUrl, options);
可选方案(接口不支持批量时的多请求写法)

如果目标接口仅支持单次创建一个用户,可通过Promise.all并发发起三次请求:

// 封装单个用户创建请求
const createSingleUser = (user) => {
  const options = {
    method: "POST",
    headers: {
      Authorization: `Bearer ${apiToken}`,
      "gtmhub-accountid": accountId,
      "Content-type": "application/json; charset=UTF-8",
      Accept: "application/json, text/plain, */*",
    },
    body: JSON.stringify(user)
  }
  return fetch(`${baseUrl}/users`, options).then(res => res.text())
}

// 三个用户数据
const users = [
  {
    email: "behn_jones@okrs.tech",
    firstName: "Behn",
    lastName: "Johnes",
    userName: "test",
  },
  {
    email: "amy_wrent@okrs.tech",
    firstName: "Amy",
    lastName: "Wrent",
    userName: "test",
  },
  {
    email: "jake_nordon@okrs.tech",
    firstName: "Jake",
    lastName: "Nordon",
    userName: "test",
  }
]

// 并发发起三个请求
Promise.all(users.map(user => createSingleUser(user)))
  .then(results => console.log('全部创建完成', results))
  .catch(err => console.log('请求出错', err.message))

如果接口要求批量请求的外层需要包裹指定键(比如{"users": [用户数组]}),只需要把JSON.stringify的入参调整为对应的对象结构即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:36:03