优先级:axios请求配置 > axios实例配置 > axios全局配置
实际开发中axios全局配置一般比较少用到,因为它的局限性比较大,一般只能设置baseURL,timeout,url,其他的method,headers,params,data这些请求都是不一样的
在axios配置中存在baseUrl,header等配置,每次做的axios时,不一定所有的配置都要自己写,这时候要做一个默认值,例如:
axios.defaults.baseURL ="http://localhost:8080"
axios.post('/user', {
firstName: 'Fred',
lastName: 'Flintstone'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
axios.post('http://localhost:9999/user', {
firstName: 'Fred',
lastName: 'Flintstone'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
或许你也知道可以通过axios.create(config) 对axios请求进行二次封装
//创建实例
var instance = axios.create();
instance.defaults.timeout= 2500
instance.get('/url',{
timeout:2000
})
执行顺序是,默认值,实例默认值,参数设置值,后者会覆盖前者
说到实例经常我们的使用场景是这样的:
//main.js
var instance1 = axios.create({
baseURL: 'http://localhost:9999/api1',
timeout: 1000
});
var instance2 = axios.create({
baseURL: 'http://localhost:9998/api2',
timeout: 2000
});
var instance3 = axios.create({
baseURL: 'http://localhost:9997/api3',
timeout: 3000
});
Vue.prototype.$http1=instance1 ;
Vue.prototype.$http2=instance2 ;
Vue.prototype.$http3=instance3 ;
Vue为何要设置Vue.prototype.$http1=instance1
//使用这个实例
this.$http1({
method: 'post',
url: 'user',
data: {
userId: "001"
}
}).then(res => {
console.log(res);
}).catch(err => {
console.log(err);
})
因篇幅问题不能全部显示,请点此查看更多更全内容