У меня есть сайт, скажем example.com
И у меня есть массив идентификаторов, которые могут соответствовать необработанному JSON на сайте.
Я могу запросить его через example.com/<name>/<id>
Дело в том, что количество идентификаторов, которые у меня есть, превышает 100. Итак, мне нужно сделать более 100 HTTP-запросов. Я не думаю, что сайт может позволить мне сделать example.com/<name>?ids=[ids]
(подключить массив идентификаторов как компонент). Есть ли способ оптимизировать это?
Я использую Node.JS, модуль HTTPS.
Если API не поддерживает пакетные запросы, вы почти ничего не сможете сделать. Вы можете попытаться распределить запросы, чтобы не забивать сайт сразу, и вы можете их (если применимо), чтобы не запрашивать повторную информацию.
Можно разбить весь список на чанки (скажем, длины = 5) и делать все запросы в этом чанке параллельно. Таким образом, вы можете оптимизировать время, необходимое для выполнения всех запросов, и в то же время не перегружать этот сайт, выполняя все запросы параллельно.
// this is `chunk` function from `lodash` package
const idChunks = _.chunk(ids, 5);
for (const idChunk of idChunks) {
// I'm using axios here only for the demonstration purposes
const results = await Promise.all(idChunk.map(id => axios.get(`example.com/<name>/${id}`)))
...
// processing results
}
вместо этого вы можете использовать почтовый запрос