如何通过迭代+1发送批处理axios get请求

vi4fp9gy  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(443)

如何使用axios发送批量http get请求,例如:

let maxI = 3000;
let i = 0;
do{
i = i + 1 ;
  await exampleUrl = axios.get(`https://hellowWorld.com/${i}`);
} while (i < maxI);

我将如何从所有提供的URL接收数据,并将其合并到单个变量中?我怎样才能确保这项工作得到迅速执行?
我完全了解axios,但我不知道如何在我的案例中应用它。
先谢谢你。

4urapxun

4urapxun1#

您可以这样做,但要小心,如果您批量发出请求以防止ddos,服务器将拒绝您的请求,这也不能保证所有请求都会成功返回,并且您将收到所有数据,下面是该请求的片段:

import axios from "axios";

const URL = "https://randomuser.me/api/?results=";

async function getData() {
  const requests = [];

  for (let i = 1; i < 6; i++) {
    requests.push(axios.get(URL + i));
  }

  const responses = await Promise.allSettled(requests);
  console.log(responses);
  const result = [];
  responses.forEach((item) => {
    if (item.status === "rejected") return;
    result.push(item.value.data.results);
  });
  console.log(result.flat());
}

getData();

另外,除非在服务器上实现批处理请求处理api,该api将减少服务器处理的请求数和浏览器发出的请求数,否则无法提高速度/减少完成批处理请求所需的时间。我给你们的解决方案只是演示如何从客户端完成,但你们的方法并不是一种最佳的方式。
对于不同浏览器可以向单个域发出的并行请求数量有不同的限制,因此我们无法减少执行查询所需的时间。
请通读这些资源以了解更多信息,它们将非常有帮助:
批量请求实现
浏览器批处理请求ajax
浏览器请求限制
极限解

相关问题