1串塑,fetch 優(yōu)缺點
1侄柔,fetch 是低層次的api枉证,可以考慮成原生的 XHR,所以用起來并不是很舒服历筝,需要進行封裝
2友鼻,優(yōu)點:
- 語法簡潔傻昙,更加語義化
- 基于標準 Promise 實現(xiàn),支持 async/await
- 更加底層彩扔,提供豐富的API
- 脫離了 XHR妆档,是ES規(guī)范里新的實現(xiàn)方法
3,缺點:
* fetch 只對網(wǎng)絡(luò)請求報錯虫碉,對于400,500都當做成功的請求贾惦,服務(wù)請返回400,500錯誤碼時,并不會reject敦捧,只有網(wǎng)絡(luò)錯誤這些導致請求不能完成時须板,fetch 才會被 reject
* fetch 默認不會帶 cookie,需要添加配置項:fetch(url,{credentials:'include'})
* fetch 不支持 abort绞惦,不支持超時控制逼纸,使用 setTimeout 及promise.reject的實現(xiàn)的超時控制并不能阻止請求過程繼續(xù)在后臺運行,造成了流量的浪費
* fetch 沒有辦法原生監(jiān)聽請求的進度济蝉,而XHR可以
* fetch 上傳文件時杰刽,不支持進度檢測
2,axios 優(yōu)缺點
1王滤,定義:axios基于promise用于瀏覽器和nodejs的http客戶端贺嫂,本質(zhì)上也是對原生XHR的封裝,只不過他是promise的實現(xiàn)版本雁乡,符合最新ES規(guī)范
2第喳,axios 特征:
* 從瀏覽器中創(chuàng)建 XMLHttpRequest
* 支持 Promise API
* 客戶端支持防止 CSRF
* 提供一些并發(fā)請求的接口(重要,方便了很多的操作)
* 從 nodejs 創(chuàng)建 http 請求
* 攔截請求和響應(yīng)
* 轉(zhuǎn)換請求合響應(yīng)數(shù)據(jù)
* 取消請求
* 自動轉(zhuǎn)換JSON數(shù)據(jù)
注:axios 底層是 XMLhttpRequest
fetch 與 axios 某種程度上講踱稍,不是一個層面比較
3曲饱,axios 與 fetch 比較
前端的標準: w3c悠抹,
whatwg 與 w3c
fetch api 就是whatwg制定的
- fetch:是底層次的api,瀏覽器原生支持的
- axios:是一個封裝好的框架
axios:
1扩淀,支持瀏覽器與nodejs前后端發(fā)請求
2楔敌,支持promise語法,
3驻谆,支持自動解析json
4卵凑,支持中斷請求
5,支持攔截請求
6胜臊,支持進度條檢測
7勺卢,支持客戶端防止CSRF
總結(jié):封裝比較好
fetch:
- 優(yōu)點:
1,瀏覽器級別原生支持的api
2象对,原生支持promise api
3黑忱,語法簡潔,符合 es 標準規(guī)范
4勒魔,由whatwg組織提出的杨何,現(xiàn)在已經(jīng)是w3c規(guī)范
- 缺點:
1,不支持文件上傳進度監(jiān)測
2沥邻,默認不帶cookie
3,不支持請求終止
4羊娃,使用不完美唐全,需要封裝
總結(jié):最大缺點:需要封裝,最大優(yōu)點:支持底層原生