Как регистрировать все вызовы axios из одного места в коде

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

Ответ 1

Лучший способ сделать это - перехватчик. Каждый перехватчик вызывается перед запросом/ответом. В этом случае регистратор-перехватчик будет.

axios.interceptors.request.use(request => {
  console.log('Starting Request', request)
  return request
})

axios.interceptors.response.use(response => {
  console.log('Response:', response)
  return response
})

или что-то в этом роде.

Хорошо, что вы используете новый экземпляр axios:

const api = axios.create({
  timeout: 1000
})

Таким образом вы можете позвонить

api.interceptors[...]

Ответ 2

Вы можете попробовать обернуть функцию axios.request в Promise.

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);
    })
  })
}