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 的請求/響應攔截器是什麼
-
請求攔截器: 在真正傳送請求前執行的回撥函式 可以對請求進行檢查或配置進行特定處理 成功的回撥函式, 傳遞的預設是 config(也必須是) 失敗的回撥函式, 傳遞的預設是 error
-
響應攔截器 在請求得到響應後執行的回撥函式 可以對響應資料進行特定處理 成功的回撥函式, 傳遞的預設是 response 失敗的回撥函式, 傳遞的預設是 error
axios 的請求/響應資料轉換器是什麼?
-
請求轉換器: 對請求頭和請求體資料進行特定處理的函式 if (utils.isObject(data)) { setContentTypeIfUnset(headers, 'application/json;charset=utf-8'); return JSON.stringify(data); }
-
響應轉換器: 將響應體 json 字串解析為 js 物件或陣列的函式 response.data = JSON.parse(response.data)
response 的整體結構
{ data, status, statusText, headers, config, request }
error 的整體結構
{ message, response, request, }
-
當配置了 cancelToken 物件時, 儲存 cancel 函式 (1) 建立一個用於將來中斷請求的 cancelPromise (2) 並定義了一個用於取消請求的 cancel 函式 (3) 將 cancel 函式傳遞出來
-
呼叫 cancel()取消請求 (1) 執行 cacel 函式, 傳入錯誤資訊 message (2) 內部會讓 cancelPromise 變為成功, 且成功的值為一個 Cancel 物件 (3) 在 cancelPromise 的成功回撥中中斷請求, 並讓發請求的 proimse 失敗,