Files
dictia-public/static/js/modules/utils/api.js

62 lines
1.6 KiB
JavaScript

/**
* API utility functions with CSRF token handling
*/
export const createApiClient = (csrfToken) => {
const getHeaders = (contentType = 'application/json') => {
const headers = {
'X-CSRFToken': csrfToken.value
};
if (contentType) {
headers['Content-Type'] = contentType;
}
return headers;
};
return {
get: async (url) => {
const response = await fetch(url, {
headers: getHeaders()
});
return response;
},
post: async (url, data = {}) => {
const response = await fetch(url, {
method: 'POST',
headers: getHeaders(),
body: JSON.stringify(data)
});
return response;
},
postFormData: async (url, formData) => {
const response = await fetch(url, {
method: 'POST',
headers: {
'X-CSRFToken': csrfToken.value
},
body: formData
});
return response;
},
delete: async (url) => {
const response = await fetch(url, {
method: 'DELETE',
headers: getHeaders()
});
return response;
},
put: async (url, data = {}) => {
const response = await fetch(url, {
method: 'PUT',
headers: getHeaders(),
body: JSON.stringify(data)
});
return response;
}
};
};