Я написал скрипт, который собирает список URL-адресов, для которых мне нужно l oop через каждый URL-адрес для отправки в виде вызова API.
const fs = require('fs');
const JSZip = require('jszip');
const directoryFile = fs.readdirSync('./zipped');
const fetch = require("node-fetch");
var accessToken = "Bearer <ACCESS TOKEN>";
var url = 'https://<API URL>/';
var data = JSON.stringify({"status":"CONFIGURED", "payloadTracingEnabledFlag":true});
var headers2 = {
'Content-Type': 'application/json',
'X-HTTP-Method-Override': 'PATCH',
'Authorization': accessToken
};
const dir = ('./zipped/');
function buildApiUrls () {
new Promise((data, err) => {
fs.readFile((dir + directoryFile), function (err, data) {
JSZip.loadAsync(data).then(function (zip) {
const files = Object.keys(zip.files);
//console.log(files);
if (err) throw err;
//console.log(files);
return files
})
.then(value => {
const newFileArr = [];
value.forEach((files) => {
const pkgName = files.substring(files.indexOf("_", files.indexOf("_")) + 1, files.lastIndexOf("_"));
const fileExt = files.split('.').pop();
const pkgExtract = (pkgName + "." + fileExt);
//console.log(pkgExtract);
if (pkgExtract !== 'package.properties') {
//const pkgExtract = (pkgName + "." + fileExt);
//console.log(pkgExtract);
const split_string = pkgExtract.split(/(\w[0-9]\.)/);
const versionSlice = split_string.slice(0 - 6).join('');
versionSlice.slice(0, -4).toString();
const nameSlice = split_string[0].toString();
const name = nameSlice.slice(0, -1);
const apiDeployable = name + "|" + versionSlice;
//console.log(apiDeployable);
//data = ("APIDEPLOYABALE = ") + encodeURIComponent(apiDeployable);
//newFileArr.push(url + apiDeployable);
const apiUrls = (url + apiDeployable);
//console.log(apiUrls);
return apiUrls;
}
});
});
});
})
.catch(err => {
console.log(err)
});
}
function postApi (apiUrls) {
const promises = async apiUrlCall => {
return await fetch(url, {method: "POST", headers: headers2, body: data})
};
return promises(apiUrls);
}
postApi(buildApiUrls()).then(resp => {
const response = resp.json();
console.log(response)
});
В настоящее время функция "buildApiUrls ()" возвращает правильный вывод, и 4 URL-адреса правильно отображаются в console.log. Проблема заключается в том, где я пытаюсь просмотреть список из 4 URL-адресов и отправить каждый как отдельный вызов API. Мой вывод следующий:
Я знаю, что моя проблема связана с "postAPI ()" и тем, как я вызываю две функции вместе.
Я уверен, что API Call работает, потому что по отдельности я могу использовать любой из выходных URL и успешно отправить вызов. Как я могу заставить этот вызов работать так, чтобы он просматривал каждый из 4 выходных URL-адресов и предоставлял ответ для каждого вызова? Я попытался вывести URL-адреса в массив и успешно получить массив URL-адресов, через которые я могу пройти oop, но у меня тоже не было enter code here
успеха с этим. Вся помощь приветствуется.