2017-01-19 10 views
13

Tôi đang sử dụng các trục cho ứng dụng phản ứng và tôi muốn ghi lại tất cả các cuộc gọi trên trục mà tôi đang thực hiện ở bất kỳ đâu trong ứng dụng. Tôi đã sử dụng một thể hiện toàn cầu của các trục thông qua chức năng tạo và tôi có thể đăng nhập một console.log chung. Tuy nhiên tôi muốn biết thêm như chức năng được gọi, các thông số vvCách ghi nhật ký tất cả các cuộc gọi từ một nơi trong mã

Trả lời

21

Cách tốt nhất để làm điều này sẽ là thiết bị chặn. Mỗi interceptor được gọi trước khi một yêu cầu/đáp ứng. Trong trường hợp này, một kẻ đánh chặn ghi nhật ký sẽ là.

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

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

hoặc cái gì đó có hiệu lực.

Đó là tốt mà bạn đang sử dụng một trường hợp mới của Axios:

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

Bằng cách đó bạn có thể gọi

api.interceptors[...] 
+0

Nó sẽ là xứng đáng để lưu ý rằng nếu không có 'trở lại response', các mã sẽ phá vỡ tại interceptor –

+0

Cái quái gì là 'api.interceptors [...] '? –

2

Bạn có thể cố gắng quấn axios.request chức năng trong một lời hứa.

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); 
    }) 
    }) 
} 
Các vấn đề liên quan