【问题标题】:How to do multiple http POST request in one API endpoint using expressjs?如何使用 expressjs 在一个 API 端点中执行多个 http POST 请求?
【发布时间】:2020-10-09 14:31:41
【问题描述】:

我正在尝试为 AgileCRM 构建 expressjs API 端点。对于我的应用程序目的,我需要在同一个 API 端点中发布多个请求,并且需要创建一个数组 [],这个数组将包装我所有的 AgileCRM 用户信息

另外,我使用的是express 4+,其中包含body-parser

第一次尝试

export const postSmsToTwilio = (request, response) => {
  let body = [];
  request.on('data', (chunk) => {
    body.push(chunk);
  }).on('end', () => {
    body = Buffer.concat(body).toString();
    response.end(body);
  });
}

第二次尝试

let users = []
try {
  let obj = req.body;
  users.push(obj);
}
catch (error) {
  res.status(500).send(error)
}

注意:数据来自 AgileCRM,格式为 text/plainapplication/json

我的最终目标是如下所示显示用户信息:

[
  {
    "name": "As Md Habibullah",
    "phone": "+8615608807860",
    "email": "asmdhabibullah@yahoo.com",
    "car_brand": "Mercedes-Benz",
    "car_number": "256858"
  },
  {
    "name": "Filippo Masiero",
    "phone": "+393470927738",
    "email": "asmdhabibullah@yahoo.com",
    "car_brand": "Mercedes-Benz",
    "car_number": "25586458"
  },
  {
    "name": "Azad Ahmed",
    "phone": "+393470927738",
    "email": "asmdhabibullah@yahoo.com",
    "car_brand": "Mercedes-Benz",
    "car_number": "2566868"
  },
  {
    "name": "Md Musa",
    "phone": "+393470927738",
    "email": "asmdhabibullah@yahoo.com",
    "car_brand": "Mercedes-Benz",
    "car_number": "256858"
  }
]

有可能吗?如果是这样,请给我一个关于我该怎么做的建议。** 如果您给我一个建议,我将很高兴。 谢谢@所有人

【问题讨论】:

    标签: javascript arrays api express rest


    【解决方案1】:

    一个 API 接受 1 个请求 1 个请求,您不能发送多个 POST 请求并获得 1 个响应。

    你需要:

    • 由您的前端发出多个请求并等待所有结果。

    • 提出 1 个请求,我们有足够的参数,让您的背部知道您想要什么并返回您预期的结果(这是正确的解决方案)

    编辑:

    更改它以提出您的所有要求:

    const promise1 = Promise.resolve(3);
    const promise2 = 42;
    const promise3 = new Promise((resolve, reject) => {
      setTimeout(resolve, 100, 'foo');
    });
    
    Promise.all([promise1, promise2, promise3]).then((values) => {
      console.log(values);
    });
    // expected output: Array [3, 42, "foo"]
    

    https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise/all

    【讨论】:

    • 你是绝对正确的。但是敏捷将数据作为单个对象发送。这是主要问题。
    • 为什么会出现问题,请同步所有请求,等待每个请求并合并所有结果
    • 不知道。如何同步所有请求并创建一个,有任何实现吗?如果有请帮助我。
    • 使用'await Promise.all',检查文档,使用您的请求参数创建一个函数,当您的所有请求完成后,您将获得一个结果数组,这只是一个想法,但您需要使用 Promise
    • 你的意思是: const postSmsToTwilio = (request, response) => 有了这个函数,我还需要使用 async、await 和 promise 额外的函数来解决所有请求?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    相关资源
    最近更新 更多