Я пытаюсь вызвать мой localhost api из скрипта узла, чтобы сделать сто запросов к printful api , каждый из которых занимает пару секунд. Это моя конечная точка
app.post("/api/addUpdateVariants", (req, res) => {
req.setTimeout(1000000);
Promise.all(req.body.map(variant => {
const {id, ...body} = variant;
return new Promise((resolve, reject) =>
axios.post(`https://api.printful.com/store/products/${req.body[0].id}/variants`,
body,
{
headers: {
'Authorization': 'Basic ' + process.env.API_KEY_64
}
}
).then(response => {
resolve(response.data.result.id)
}).catch(err => {
reject(err);
})
);
})).then(promiseRes => {return res.status(200).send({msg:"variants added", promiseRes})})
.catch(err => res.status(500));
});
, и это мои данные, переданные в req.body
[{"files":[{"id":151812076}],"variant_id":4021,"retail_price":"25.00","id":"@1"},{"files":[{"id":151812076}],"variant_id":4022,"retail_price":"25.00","id":"@1"},{"files":[{"id":151812076}],"variant_id":4023,"retail_price":"25.00","id":"@1"},{"files":[{"id":151812076}],"variant_id":4024,"retail_price":"25.00","id":"@1"},{"files":[{"id":151812076}],"variant_id":4025,"retail_price":"25.00","id":"@1"},{"files":[{"id":151812076}],"variant_id":5296,"retail_price":"25.00","id":"@1"},{"files":[{"id":151812076}],"variant_id":5311,"retail_price":"25.00","id":"@1"},{"files":[{"id":151812076}],"variant_id":8440,"retail_price":"25.00","id":"@1"},{"files":[{"id":151812076}],"variant_id":8441,"retail_price":"25.00","id":"@1"},
... many more
запрос успешно выполняется, если я вызываю конечную точку только с несколькими строками, но я ищу для способа автоматизировать это без меня, комментировать / раскомментировать большую часть тела снова и снова. На данный момент только 23 строки данных успешно используются при вызове printful api до того, как сервер express зависнет (больше не будет успешно добавлено). У кого-нибудь есть представление о том, что я делаю не так? Я попытался разделить запросы, как это, вызывая его с помощью фрагментированного массива, но это также тайм-аут / сокет закрыт.
const addVariants = (arrays) => {
const [head, ...tail] = arrays;
const variantsBody = head.map(id => (
{
"files": [
{"id": 151812076}
],
"variant_id": id,
"retail_price": "25.00",
id: "@1"
}
));
axios.post("http://localhost:8000/api/addUpdateVariants",
variantsBody
)
.then(response => {
if(tail.length > 0) addVariants(tail);
}).catch(err => console.log(err));
}