乙個比較全面的基於axios的封裝

2021-10-07 15:19:15 字數 1791 閱讀 4676

在幾個公司工作過,我發現我很少看到考慮的比較全面的ajax封裝。可能是因為我待過的公司不夠優秀吧,也可能是因為我所在的團隊不夠優秀吧。基於這樣的乙個情況,我覺得我可以寫乙個比較全面的基於axios的封裝。

這裡我只分享乙個相對比較全面的基於axios的封裝,如果想要更符合你專案的封裝,還請自己多理解或者和我交流溝通。

「以下是基於axios封裝的**:」

/**

* http封裝請求

*/import axios from 'axios'

// 超時時間

axios.defaults.timeout = 3000

// http請求***

axios.interceptors.request.use(config => , error => )

let erorrmap =

// http響應***

axios.interceptors.response.use(res => else else

} return res

}, async (error) =>

} else if (error.response) else if (error.response.status === 404) else if (error.response.status === 401) else if (error.response.status === 500)

} return promise.reject(error)

})let request = (config) => ,

params: {}

},config))}

export default request

「基於上面的封裝,我詳細的做乙個講解:」

1,http請求***中的第乙個引數是乙個函式,在其中可以給每乙個請求做一些配置項的處理,比如加時間戳等等。

2,http響應***中的第乙個引數同樣是乙個函式,在其中可以處理http響應code是200時正常或者異常的情況。

3,http響應***中的第二個引數同樣是乙個函式,在其中可以處理除了http響應code是200以外的情況,比如未登入時的401,可以跳出需要登入才可以檢視操作的頁面等等。

4,request方法的定義中可以在頭headers中加一些token之類配置。

「當然光知道上面的基於axois的封裝還不夠,還得知道如何使用該封裝,**如下:」

import request from './request'

import * as url from './url'

request(

).then((res) => else

}).catch((error) => else if (error.request) else

})

「使用基於axios的封裝,我詳細介紹一下:」

1,request的返回的是乙個promise例項,then方法中是處理http響應code是200的情況,該情況下又分成正常和異常。

2,catch方法中可以處理的異常包括請求異常和其他的異常,其中請求異常包括有資料返回的異常和沒資料返回的異常,其他異常包括http請求***中**異常,http響應***中的**異常,then方法中**異常等等。

如果你能搞清楚以上的內容,我想你應該知道如何自己封裝乙個比較全面的request。

乙個比較全面的探測器

乙個比較全面的探測器 response.write response.write vbscript支援 scriptengine response.write buildversion scriptenginebuildversion response.write majorversion scri...

如何全面的把握乙個系統的異常處理

對於乙個大的系統來說,異常處理必須要有乙個總的策略和方針,並在組織內貫徹執行,否則就很難把異常處理好。一 從整個系統全域性的角度來看 1 程序內錯誤 用異常來報告錯誤 內部錯誤 底層模組通過異常來向高層模組報告錯誤的發生。2 程序間錯誤 用errorcode,errormessage,action來...

Redux自己手寫乙個簡化版全面的redux

import react from react const renderscreen screen const renderbutton button 1.全域性渲染方法 渲染螢幕 renderscreen state.screen 渲染按鈕 renderbutton state.button 2....