요청 관리 에러처리 수정

This commit is contained in:
현성필
2024-01-10 16:13:23 +09:00
parent 476ac44572
commit 19ec9d3bdd
8 changed files with 71 additions and 134 deletions
+40 -48
View File
@@ -14,17 +14,39 @@ class APIClient {
this.abortController = null;
}
async sendAPIRequest(model, callback) {
try {
const updatedModel = await this.executePreRequestScript(model);
let processedRequest = this.replacePlaceholdersWithVariables(updatedModel);
if (callback){
callback(processedRequest);
}
return this.makeAjaxRequest(processedRequest, model);
} catch (error) {
throw error;
async sendAPIRequest(model, preProcessCallback) {
// try {
const updatedModel = await this.executePreRequestScript(model);
let processedRequest = this.replacePlaceholdersWithVariables(updatedModel);
if (preProcessCallback) {
preProcessCallback(processedRequest);
}
return this.makeAjaxRequest(processedRequest, model)
.then(async response => {
const responseData = await response.json(); // Parse the JSON response
if (!response.ok) {
// If response is not OK, use the parsed error information
const errorMessage = responseData.error || 'Unknown error';
throw new Error(`API 호출 중 오류가 발생했습니다. 사유[${errorMessage}]`);
}
return responseData;
})
.then(data => {
let response = {};
response.body = data.body;
response.status = data.status;
response.headers = {};
response.size = data.size;
_.forEach(data.headers, (header) => {
response.headers[header.key] = header.value;
});
return this.executePostRequestScript(model.postRequestScript, response)
.catch(error => {
$('.toast-body').text(error);
$('.toast').toast('show');
return response; // Return the original response even if there's an error
});
});
}
abort() {
@@ -46,38 +68,7 @@ class APIClient {
},
body: JSON.stringify(processedRequest),
signal: signal // pass the signal to the fetch
})
.then(async response => {
const responseData = await response.json(); // Parse the JSON response
if (!response.ok) {
// If response is not OK, use the parsed error information
const errorMessage = responseData.error || 'Unknown error';
throw new Error(`API 호출 중 오류가 발생했습니다. 사유[${errorMessage}]`);
}
return responseData;
})
.then(data => {
try {
let response = {};
response.body = data.body;
response.status = data.status;
response.headers = {};
response.size = data.size;
_.forEach(data.headers, (header) => {
response.headers[header.key] = header.value;
});
return this.executePostRequestScript(model.postRequestScript, response);
} catch (error) {
console.log('error1')
$('.toast-body').text(error);
$('.toast').toast('show');
}
})
.catch(error => {
throw error;
});
});
}
@@ -135,7 +126,7 @@ class APIClient {
window.preRequestComplete = (updatedModel, error) => {
if (error) {
reject('PreRequestScript error:', error);
reject(error);
} else {
resolve(updatedModel);
}
@@ -152,7 +143,7 @@ class APIClient {
${script}
window.parent.preRequestComplete(window.request, null);
} catch (error) {
window.parent.preRequestComplete(null, error.toString());
window.parent.preRequestComplete(null, error);
}
</script>`;
});
@@ -163,11 +154,12 @@ class APIClient {
let resultFrame = document.getElementById('postRequest');
window.response = response;
window.temp_variable = this.variables;
window.postRequestComplete = (updatedModel, error) => {
window.postRequestComplete = (response, error) => {
console.log(response)
if (error) {
reject('PreRequestScript error:', error);
reject(error);
} else {
resolve(updatedModel);
resolve(response);
}
};
@@ -179,7 +171,7 @@ class APIClient {
${script}
window.parent.postRequestComplete(window.response, null);
} catch (error) {
window.parent.postRequestComplete(null, error.toString());
window.parent.postRequestComplete(window.response, error.toString());
}
</script>`;
});