Как выполнить несколько HTTP-запросов POST в одной конечной точке API, используя expressjs? - PullRequest
1 голос
/ 19 июня 2020

Я пытаюсь создать конечную точку expressjs API для AgileCRM. Для моего приложения мне нужно отправить несколько запросов в одну и ту же конечную точку 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/plain или application/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"
  }
]

Возможно ли это? Если да, то дайте мне предложение, как я могу это сделать. ** Я буду рад, если вы дадите мне предложение. Спасибо @ all

1 Ответ

0 голосов
/ 19 июня 2020

API принимает 1 запрос на 1 запрос, вы не можете отправить несколько запросов POST и получить 1 ответ.

Вам необходимо:

  • Сделать несколько запросов через FrontEnd и подождать весь результат.

или

  • Сделайте 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

...