为什么要用axios
axios的基本使用
- get,获取数据
- post,提交数据(表单提交以及文件上传)
- put,更新数据 (提交所有的数据)
- patch,提交数据 (提交修改的数据)
- delete,删除数据
1.get的使用
1 | axios({ |
或者简写为:
1 | axios.get(url, params).then(res => { do something }) |
params
会出现在请求头中的querry string parameters
中,并且会出现在浏览器的地址栏中,即会拼接到url
中。
2.post方法的使用
post
的请求头中会有一个content-type
,该字段有两个值,一个为form-data
,一般用于表单提交(文件上传,图片上传等等);另一个是application/json
即,传递的是json
数据。
1 | axios({ |
或者写别名方法:
1 | axios.post(url, data).then(res => { do something }) |
如果需要传递的是form-data
,那么我们需要先实例化一个FormData
,然后将data
指向form-data
即可
3.delete的使用方法
1 | axios({ |
config
的第三个字段可以为params
,这样参数会拼接在url
中,如果我们不想使之出现在url
中,我们只需要将params
替换为data
。
并发请求
同时进行多个请求,并统一处理返回值,如果在某些场景中我们需要同时依赖两个接口返回的数据,那么我们可以使用并发请求。
axios.all([]) 返回的结果是一个数组,使用 axios.spread 可将数组 [res1,res2] 展开为 res1, res2
1 | axios.all([ // 这里的参数是一个数组,里面包含了axios请求 |
axios深入
创建axios实例
1 | // axios实例化 |
axios配置
- 全局配置,例如
axios.defaults.timeout = 1000
- 实例配置, 在创建axios实例时传入的配置,如果不传实例配置就会使用全局配置
- 请求配置,在使用axios请求时,可以单独传入新的配置
常见配置
这三种配置的优先级为:请求配置 > 实例配置 > 全局配置
axios拦截器
请求拦截器:
1 | axios.interceptors.request.use( |
响应拦截器:
1 | axios.interceptors.response.use( |
拦截器可以做到的事
请求拦截:
请求拦截中错误拦截较少,通常都是配置相关的拦截可能的错误比如请求超时,可以将页面跳转到一个错误页面中。
响应拦截:
响应的成功拦截中,主要是对数据进行过滤。
响应的失败拦截中,可以根据status判断报错的错误码,跳转到不同的错误提示页面
axios错误处理
一般来说,如果我们在调用接口时请求错误或者响应错误,程序处理流程都会进入到catch
代码块中,例如:
1 | axios.get('/data.json').then(callback).catch(err => { |