学习--fetch与axios比较
fetch与axios定位认识
fetch是浏览器提供的api,axios是社区封装的一个组件。
fetch:1语法简单,更加语义化。
2:基于标准Promise实现,支持async/await
3:更加底层,提供的API丰富(request,response)
4:脱离了XHR,是ES规范里新的实现方式。
是由whatwg 组提出,现在已经w3c规范。
问题:是浏览器级别原生支持的API,可以认为是一个原生的XHR,所以使用起来不是那么舒服。需要进行封装。
1:fetch只对网络请求报错,对400,500都当作成功的请求,服务器返回400,500错误时并不会reject,只有网络错误这些导致请求不能完成时,fetch才会被reject。
2:fetch默认不会带cookie,需要添加配置项:fetch(url,{credentials:'include'})
3:fetch不支持abort,不支持超时控制,使用setTimeout及Promise.reject的实现的超时控制并不能阻止请求过程继续在后台运行,造成了流量的浪费。
4:fetch没有办法原生监测请求的进度,而XHR可以
axios 支持进度检测
axios是一个基于Promise用于浏览器和nodejs的HTTP客户端,本质上也是对原生XHR的封装,只不过它是Promise实现版本,符合最新的ES规范。
1:从浏览器中创建XMLHttpRequest
2:支持PromiseApi
3:客户端支持防止CSRF
4:提供了一些并发请求的接口(重要,方便了很多操作)axios.all=>Promise.all
5:支持浏览器和node.js发请求,前后端发请求
6:拦截请求和响应 (拦截器 )
7:转换请求和响应数据
8:取消请求
9:自动转换JSON数据。