axios
1.从浏览器中创建 XMLHttpRequest
2.客户端支持防止CSRF
3.提供了一些并发请求的接口(重要,方便了很多的操作)
4.从 node.js 创建 http 请求
5.拦截请求和响应
6.转换请求和响应数据
7.自动转换JSON数据
fetch优势
1.语法简洁,更加语义化
2.基于标准 Promise
实现,支持 async/await
‘
3.同构方便,使用 isomorphic-fetch
4.更加底层,提供的API丰富
5.脱离了XHR,是ES规范里新的实现方式
fetch存在问题
fetch
是一个低层次的API
,你可以把它考虑成原生的XHR
,所以使用起来并不是那么舒服,需要进行封装。
fetch只对网络请求报错,对400,500都当做成功的请求,服务器返回 400,500 错误码时并不会 reject,只有网络错误这些导致请求不能完成时,fetch 才会被 reject。
fetch默认不会带cookie,需要添加配置项: fetch(url, {credentials: ‘include’})
fetch不支持abort,不支持超时控制,使用setTimeout及Promise.reject的实现的超时控制并不能阻止请求过程继续在后台运行,造成了流量的浪费
fetch没有办法原生监测请求的进度,而XHR可以
没有相应拦截和请求拦截