在axios設定中存在baseUrl,header等設定,每次做的axios時,不一定所有的設定都要自己寫,這時候要做一個預設值,例如:
axios.defaults.baseURL ="http://localhost:8080"
之後呼叫如下post方法,請求的介面地址就是 http://localhost:8080/user
axios.post('/user', {
firstName: 'Fred',
lastName: 'Flintstone'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
當然axios的設定可以不依賴於預設,如果進行如下引數設定,那麼請求的介面地址就是http://localhost:9999/user
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);
})