1. 程式人生 > >axios.js 原始碼分析

axios.js 原始碼分析

axios.js 原始碼分析

axios.js --> Axios.js --> InterceptorManager.js --> dispatchRequest.js --> transformData.js --> adapters

  1. axios 為什麼可以在瀏覽器和伺服器上同時執行?
    答:因為axios使用了介面卡模式,在node中引入http模組請求,在瀏覽器中使用xhr物件進行請求

  2. axios 如何實現請求和相應的修改
    答:通過一個攔截器(InterceptorManager)實現,攔截器其實就是一個觀察者模式,通過use新增,通過eject刪除,通過forEach進行notify

  3. 攔截器和轉換器的區別?
    答:攔截器主要是用來對請求和響應的資料進行一些處理,轉化器則是將請求和響應的資料進行一些轉換,比如轉換請求引數,JSON相應資料等

  4. 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){
    // 超時處理
  }
})