31 lines
903 B
JavaScript
31 lines
903 B
JavaScript
export function sendRequest(url, method = "GET", data = null, customHeaders = {}) {
|
|
const options = {
|
|
method,
|
|
credentials: 'include',
|
|
headers: {}
|
|
};
|
|
|
|
// Merge custom headers
|
|
Object.assign(options.headers, customHeaders);
|
|
|
|
// If data is provided and is not FormData, assume JSON.
|
|
if (data && !(data instanceof FormData)) {
|
|
if (!options.headers["Content-Type"]) {
|
|
options.headers["Content-Type"] = "application/json";
|
|
}
|
|
options.body = JSON.stringify(data);
|
|
} else if (data instanceof FormData) {
|
|
options.body = data;
|
|
}
|
|
|
|
return fetch(url, options)
|
|
.then(response => {
|
|
if (!response.ok) {
|
|
return response.text().then(text => {
|
|
throw new Error(`HTTP error ${response.status}: ${text}`);
|
|
});
|
|
}
|
|
const clonedResponse = response.clone();
|
|
return response.json().catch(() => clonedResponse.text());
|
|
});
|
|
} |