axios.js 原始碼分析
阿新 • • 發佈:2019-01-01
axios.js 原始碼分析
axios.js --> Axios.js --> InterceptorManager.js --> dispatchRequest.js --> transformData.js --> adapters
axios 為什麼可以在瀏覽器和伺服器上同時執行?
答:因為axios使用了介面卡模式,在node中引入http模組請求,在瀏覽器中使用xhr物件進行請求axios 如何實現請求和相應的修改
答:通過一個攔截器(InterceptorManager)實現,攔截器其實就是一個觀察者模式,通過use新增,通過eject刪除,通過forEach進行notify攔截器和轉換器的區別?
答:攔截器主要是用來對請求和響應的資料進行一些處理,轉化器則是將請求和響應的資料進行一些轉換,比如轉換請求引數,JSON相應資料等- axios常用配置
import axios from 'axios' // 設定通用header axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; // xhr標識 // 設定某種請求的header axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'; // 設定某次請求的header axios.get(url, { headers: { 'Authorization': 'whr1', }, }) //跨域攜帶cookie axios.defaults.withCredentials = true; // 設定超時 axios.defaults.timeout = 3000; // 超時處理 axios().catch(error => { const { message } = error; if (message.indexOf('timeout') > -1){ // 超時處理 } })