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.
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[...]
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
axios-debug-log
npm install --save axios-debug-log
require('axios-debug-log')
avant tout appel axiosDEBUG=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.
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 demandes axios https://www.npmjs.com/package/axios-logger-mysql , j'espère que cela vous aidera.