У меня есть пользовательская настройка API как:
export default class API {
static send(verb, resource, raw_params, callback, errcallback) {
let org_id = window.localStorage._organization_id,
params = Object.keys(raw_params).reduce(function(o, k) {
o[k] = raw_params[k];
return o;
}, {});
errcallback = typeof errcallback === 'function' ? errcallback : function() {};
if (!!org_id && !params.hasOwnProperty('organization_id')) {
params.organization_id = org_id;
}
$.ajax({
url: URL + '/' + resource,
type: verb,
data: params
xhrFields: { withCredentials: true }
})
.done(callback)
.fail(errcallback);
}
static get(resource, params, callback, errcallback) {
API.send('GET', resource, params, callback, errcallback);
}
static post(resource, params, callback, errcallback) {
API.send('POST', resource, params, callback, errcallback);
}
static put(resource, params, callback, errcallback) {
API.send('PUT', resource, params, callback, errcallback);
}
static del(resource, params, callback, errcallback) {
API.send('DELETE', resource, params, callback, errcallback);
}
}
Затем я могу сделать запрос API из любого файла в моем приложении как:
API.post('x/y', {params}, res => {
this.setState(res);
}, (xhr) => {
const errorMessage = JSON.parse(xhr.responseText).message;
alert('error', 5000, errorMessage);
}
Я пытаюсь заменить это на axios
, и я заменил запрос $.ajax
следующим:
axios({
method: verb,
url: `${URL}/${resource}`,
data: params,
xhrFields: { withCredentials: true }
})
.then(callback)
.catch(errcallback)
Но он не вызывает ответный или ошибочный обратный вызов. Есть ли способ, которым я могу обновить этот класс, чтобы обработать это, или я должен вместо этого заменять каждый запрос на запрос axios и использовать определенные Axios res
и xhr
?