资源来自:https://developer.aliyun.com/ask/289308?spm=a2c6h.13066354.0.0.767533b5ZcyIwH
ajax、fetch、axios这三都有什么区别?
ajax是最早出现发送后端请求的技术,属于原生js范畴,核心是使用XMLHttpRequest对象,使用较多并有先后顺序的话,容易产生回调地狱。
fetch号称可以代替ajax的技术,是基于es6中的Promise对象设计的,参数和jQuery中的ajax类似,它并不是对ajax进一步封装,它属于原生js范畴。没有使用XMLHttpRequest对象。
axios不是原生js,使用时需要对其进行安装,客户端和服务器端都可以使用,可以在请求和相应阶段进行拦截,基于promise对象
如果将axios异步请求同步化处理?
async ,await
Generator函数
回调里面写回调
// 统一处理axios请求
async getHistoryData (data) {
try {
let res = await axios.get('/api/survey/list/', {
params: data
})
this.tableData = res.data.result
this.totalData = res.data.count
} catch (err) {
console.log(err)
alert('请求出错!')
}
}
}
为何官方推荐使用axios而不用vue-resource?
1.vue-resources不再更新了,vue作者尤大推荐axios。
2.axios更加强大
3.axios就是一个基于ES6的Promise的网络请求库,其实说干净了就是一个打包好的XMLHttpRequests,也就是说,这个也是一个ajax库。
4.axios
在浏览器里建立XHR
通过nodejs进行http请求
转换或者拦截请求数据或响应数据
支持Promise的API
可以取消请求
自动转换JSON
可以防御XSRF攻击!
5.vue-resources
只提供了浏览器版本
你了解axios的原理吗?有看过它的源码吗?
你有封装过axios吗?主要是封装哪方面的?
封装处理配置(路径、时间、token)、统一管理接口、错误处理、不同形式的请求、消息提示、loading等。
如何中断axios的请求?
方法一、使用cancelToken.sourse工厂方法创建cancel token
方法二、通过传递一个 executor 函数到 CancelToken 的构造函数来创建 cancel token
axios是什么?怎样使用它?怎么解决跨域的问题?
axios 的是一种异步请求,用法和ajax类似,安装npm install axios --save 即可使用,请求中包括get,post,put, patch ,delete等五种请求方式,
解决跨域可以在请求头中添加Access-Control-Allow-Origin,
也可以在index.js文件中更改proxyTable配置等解决跨域问题
因为axios在vue中利用中间件http-proxy-middleware做了一个本地的代理服务A,相当于你的浏览器通过本地的代理服务A请求了服务端B,浏览器通过服务A并没有跨域,因此就绕过了浏览器的同源策略,解决了跨域的问题。