Я использую axios для реагирующего приложения, и я хотел бы регистрировать все вызовы axios, которые я делаю в любом месте приложения. Я уже использую один глобальный экземпляр axios через функцию create, и я могу зарегистрировать общий console.log. Тем не менее, я хотел бы больше информации, как функция вызывается, параметры и т.д.Как регистрировать все вызовы axios с одного места в коде
13
A
ответ
21
Лучший способ сделать это будет перехватчик. Каждый перехватчик вызывается перед запросом/ответом. В этом случае будет регистрирующий перехватчик.
axios.interceptors.request.use(request => {
console.log('Starting Request', request)
return request
})
axios.interceptors.response.use(response => {
console.log('Response:', response)
return response
})
или что-то в этом роде.
Это хорошо, что вы используете новый экземпляр Аксиос:
const api = axios.create({
timeout: 1000
})
Таким образом, вы можете позвонить
api.interceptors[...]
1
Похоже, вы можете перехватывать все запросы с помощью «перехватчик», и войти в него: https://github.com/mzabriskie/axios#interceptors
2
Вы можете попробовать обернуть axios.request
функции в обещании.
function loggedRequest(config) {
return new Promise((resolve, reject) => {
axios.request(config)
.then((res) => {
// log success, config, res here
resolve(res);
})
.catch(err => {
// same, log whatever you want here
reject(err);
})
})
}
Это будет достойно отметить, что без 'возвращения response', то код сломается на перехватчике –
Что, черт возьми, 'api.interceptors [...]'? –