Comment enregistrer tous les appels axios à partir d'un seul endroit dans le code

j'utilise axios pour une application react et j'aimerais enregistrer tous les appels axios que je fais n'importe où dans l'application. J'utilise déjà une seule instance globale d'axios via la fonction create et je suis capable d'enregistrer une console Générique.journal. Cependant je voudrais plus d'info comme fonction étant appelée, Paramètres,etc.

17
demandé sur David Choi 2017-01-19 23:37:55

4 réponses

La meilleure façon de le faire serait un intercepteur. Chaque intercepteur est appelé avant une requête / réponse. Dans ce cas, un intercepteur de journalisation le serait.

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

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

ou quelque chose dans ce sens.

Il est bon que vous soyez à l'aide d'une nouvelle instance de l'axios:

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

de Cette façon, vous pouvez appeler

api.interceptors[...]
29
répondu Kevin Velasco 2017-01-20 01:32:09

Vous pouvez essayer d'envelopper le axios.request fonction dans une promesse.

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);
    })
  })
}
2
répondu xiaofan2406 2017-01-20 00:13:58

On dirait que vous pouvez intercepter toutes les requêtes à l'aide d'un "interceptor", et connectez-vous à l'intérieur de celui-ci: https://github.com/mzabriskie/axios#interceptors

1
répondu Jeff McCloud 2017-01-19 20:44:12

Utiliser axios-debug-log

  1. npm install --save axios-debug-log
  2. require('axios-debug-log') avant tout appel d'axios
  3. Définir la variable d'environnement DEBUG=axios

Par défaut, vous verrez journaux comme suit:

  axios POST /api/auth/login +0ms
  axios 200  (POST http://localhost:8080/api/auth/login) +125ms
  axios POST /api/foo +0ms
  axios 200  (POST http://localhost:8080/api/foo) +15ms

reportez-vous à la documentation pour les options de configuration et de personnalisation.

0
répondu Dheeraj V.S. 2018-08-07 12:49:40