2017-01-19 29 views
13

私は反応アプリケーションのためにAxiosを使用しています。私はアプリケーション内のどこにでも作成しているすべてのAxios呼び出しを記録したいと思います。私はすでにcreate関数で1つのグローバルなAxiosインスタンスを使用しています。一般的なconsole.logを記録できます。しかし、私は機能などのようなより多くの情報と呼ばれて、パラメータを、希望コード内のある場所からすべてのaxios呼び出しをログに記録する方法

あなたが「インターセプター」を使用して、すべての要求をインターセプトすることができ、そしてその中にログインするように見えます

答えて

21

これを行う最良の方法は、インターセプタです。各インターセプタは、要求/応答の前に呼び出されます。この場合、ロギング・インターセプターが実行されます。

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

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

またはそれに相当するもの。

それはあなたがaxiosの新しいインスタンスを使用していることを良いことだ:

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

あなたは `リターンresponse`なしていることに注意することは価値があるだろう

api.interceptors[...] 
+0

を呼び出すことができますこの方法、コードはインターセプタで破損します –

+0

'api.interceptors [...]'は何ですか? –

2

をあなたが試すことができaxios.requestを包みますプロミスの機能

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); 
    }) 
    }) 
} 
関連する問題