1. 程式人生 > 其它 >Axios學習筆記

Axios學習筆記

 

axios筆記

基本知識

axios返回的是一個promise物件 axios將伺服器返回結果自動json解析變成物件形式

請求攔截器和響應攔截器

請求攔截器中可以對config請求引數進行修改 響應攔截器中可以對response響應資料進行處理 攔截器總體上執行先後順序為 請求攔截器→響應攔截器→使用者自定義響應資料 攔截器內部上執行先後順序為 請求攔截器為棧 響應攔截器佇列

axios和Axios的關係

1、語法上:axios不是Axios的例項 2、功能上:axios是Axios的例項 3、axios是Axios.prototype.request函式bind()返回的函式 4、axios作為物件有Axios原型物件上所有方法,有Axios物件上所有屬性

axios.create()的instance和axios的區別

相同: 1、都是一個能發任意請求的函式:request(config) 2、都是發特定請求的各種方法:get()/post()/put()/delete() 3、都有預設配置和攔截器的屬性:defaults/interceptors 不同: 1、預設配置不一樣 2、instance沒有axios後面新增的一些方法:create()/CancelToken()/all()

axios 的請求/響應攔截器是什麼

  1. 請求攔截器: 在真正傳送請求前執行的回撥函式 可以對請求進行檢查或配置進行特定處理 成功的回撥函式, 傳遞的預設是 config(也必須是) 失敗的回撥函式, 傳遞的預設是 error

  2. 響應攔截器 在請求得到響應後執行的回撥函式 可以對響應資料進行特定處理 成功的回撥函式, 傳遞的預設是 response 失敗的回撥函式, 傳遞的預設是 error

axios 的請求/響應資料轉換器是什麼?

  1. 請求轉換器: 對請求頭和請求體資料進行特定處理的函式 if (utils.isObject(data)) { setContentTypeIfUnset(headers, 'application/json;charset=utf-8'); return JSON.stringify(data); }

  2. 響應轉換器: 將響應體 json 字串解析為 js 物件或陣列的函式 response.data = JSON.parse(response.data)

response 的整體結構

{ data, status, statusText, headers, config, request }

error 的整體結構

{ message, response, request, }

如何取消未完成的請求?

    1. 當配置了 cancelToken 物件時, 儲存 cancel 函式 (1) 建立一個用於將來中斷請求的 cancelPromise (2) 並定義了一個用於取消請求的 cancel 函式 (3) 將 cancel 函式傳遞出來

    2. 呼叫 cancel()取消請求 (1) 執行 cacel 函式, 傳入錯誤資訊 message (2) 內部會讓 cancelPromise 變為成功, 且成功的值為一個 Cancel 物件 (3) 在 cancelPromise 的成功回撥中中斷請求, 並讓發請求的 proimse 失敗, 失敗的 reason 為 Cancel 物件