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.
Réponses
Trop de publicités?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[...]
Utiliser axios-debug-log
npm install --save axios-debug-log
-
require('axios-debug-log')
avant tout axios appel - 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.
Il semble que vous puissiez intercepter toutes les demandes à l'aide d'un "intercepteur" et vous y connecter: https://github.com/mzabriskie/axios#interceptors
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);
})
})
}
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.