拦截器是全局的,拦截器可以在请求发送前和发送请求后做一些处理
拦截器在一些场景下会非常有用,比如请求发送前在headers中设置access_token或者在请求失败時,提供共通的处理方式
以下是可用的实例方法。指定的配置将与实例的配置合并
这些是创建请求时可以用的配置选项只有 url 是必需的。如果没有指定 method请求将默认使用 get 方法。
// 在实例已创建后修改默认值配置会以一个优先顺序进行合并这个顺序是:在 lib/defaults.js 找到的库的默认值,然后是实例的 defaults 属性最后是请求的 config 参数。后者将优先于前者这里是一个例子:
// 使用由库提供的配置的默认值来创建实例
// 此时超时配置嘚默认值是 `0`
// 覆写库的超时默认值
// 现在,在超时前所有请求都会等待 2.5 秒
// 为已知需要花费很长时间的请求覆写超时设置
在请求或响应被 then 或 catch 处悝前拦截它们。
// 在发送请求之前做些什么 // 对请求错误做些什么 // 对响应数据做点什么 // 对响应错误做点什么如果你想在稍后移除拦截器可以這样:
可以为自定义 axios 实例添加拦截器
// 请求已发出,但服务器响应的状态码不在 2xx 范围内可以使用 validateStatus 配置选项定义一个自定义 HTTP 状态码的错误范围
// 取消请求(message 参数是可选的)//依赖于qs包将对象转换成以&连接的字符串
配置 axios 使用了 axios 的三个配置项,实际上只有 url 是必须的完整的 api 可以参考使用说明 为了方便,axios 還为每种方法起了别名比如上面的 saveForm 方法等价于:
})//欢迎加入全栈开发交流圈一起学习交流:当请求成功时,会执行 .then否则执行 .catch 这两个回调函数都有各自独立的作用域,如果直接在里面访问 this无法访问到 Vue 实例 这时只要添加一个 .bind(this) 就能解决这个问题
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。