❝在幾個公司工作過,我發現我很少看到考慮的比較全面的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....