2017-01-19 10 views
13

Я использую axios для реагирующего приложения, и я хотел бы регистрировать все вызовы axios, которые я делаю в любом месте приложения. Я уже использую один глобальный экземпляр axios через функцию create, и я могу зарегистрировать общий console.log. Тем не менее, я хотел бы больше информации, как функция вызывается, параметры и т.д.Как регистрировать все вызовы axios с одного места в коде

ответ

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[...] 
+0

Это будет достойно отметить, что без 'возвращения response', то код сломается на перехватчике –

+0

Что, черт возьми, 'api.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); 
    }) 
    }) 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^