web-dev-qa-db-fra.com

Comment enregistrer tous les appels axios depuis un endroit dans le code

J'utilise axios pour une application de réaction et j'aimerais enregistrer tous les appels axios que je passe n'importe où dans l'application. J'utilise déjà une seule instance globale d'axios via la fonction create et je peux enregistrer un fichier console.log générique. Cependant, je voudrais plus d’informations comme la fonction appelée, les paramètres, etc.

24
David Choi

Le meilleur moyen de le faire serait un intercepteur. Chaque intercepteur est appelé avant une demande/réponse. Dans ce cas, un intercepteur de journalisation 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 à cet effet.

C'est bien que vous utilisiez une nouvelle instance d'axios:

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

De cette façon, vous pouvez appeler 

api.interceptors[...]
44
Kevin Velasco

Il semble que vous puissiez intercepter toutes les demandes à l'aide d'un "intercepteur" et vous connecter à l'intérieur: https://github.com/mzabriskie/axios#interceptors

2
Jeff McCloud

Utilisez axios-debug-log

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

Par défaut, vous verrez les 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 connaître les options de configuration et de personnalisation.

2
Dheeraj V.S.

Vous pouvez essayer d'encapsuler la fonction axios.request 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
xiaofan2406

Voici un package NPM pour MySQL qui vous permet de consigner toutes les demandes axios https://www.npmjs.com/package/axios-logger-mysql , j'espère que cela vous aidera. 

0
kendysond