106 votes

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 en mesure de consigner un console.log générique. Cependant, je voudrais plus d'informations sur la fonction appelée, les paramètres, etc.

221voto

Kevin Velasco Points 1079

La meilleure façon 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[...]
 

21voto

Dheeraj V.S. Points 6384

Utiliser axios-debug-log

  1. npm install --save axios-debug-log
  2. require('axios-debug-log') avant tout axios appel
  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 la configuration et les options de personnalisation.

3voto

Jeff McCloud Points 3963

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

2voto

xiaofan2406 Points 1467

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

-9voto

kendysond Points 8

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X