一、基礎使用
axiosoptions是對axios進行配置的一個對象,在每次向伺服器發送請求時,axios都會讀取axiosoptions中對應的配置來設置請求參數和響應處理方式。
使用axiosoptions最基礎的方法就是直接傳入一個包含url、method等基本信息的對象來進行請求。代碼示例如下:
axios({
method: 'get',
url: 'https://api.example.com',
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
上述示例中,我們傳入了一個包含’url’和’method’的對象來進行get請求,axios會自動將該對象轉化為請求參數,對應的響應結果會通過then和catch進行處理。
二、配置請求參數
axiosoptions中可以設置的請求參數除了最基礎的’url’和’method’之外,還有以下參數:
- headers: 設置請求頭信息,可以是一個對象或函數
- params: 以key:value的形式設置請求url中的查詢參數
- data: 設置請求體中的數據,僅在post、put、patch方法中有效
- timeout: 設置請求超時時間,單位是毫秒
- auth: 設置身份驗證信息
- responseType: 設置響應數據的類型,可選值包括’arraybuffer’、’document’、’json’、’text’、’stream’、’blob’
- maxContentLength: 設置響應數據的最大長度,單位是位元組
- maxRedirects: 設置最大重定向次數
示例代碼如下:
axios({
url: 'https://api.example.com',
method: 'post',
headers: {
'Content-Type': 'application/json',
},
params: {
key1: 'value1',
key2: 'value2',
},
data: {
name: '張三',
age: 20,
},
timeout: 5000,
auth: {
username: 'username',
password: 'password',
},
responseType: 'json',
maxContentLength: 1000000,
maxRedirects: 5,
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
三、攔截器
在axiosoptions中,我們可以設置請求和響應的攔截器,分別對請求和響應進行處理。
一個請求攔截器的示例代碼如下:
axios.interceptors.request.use(
function (config) {
// 在發送請求之前做些什麼
config.headers['Authorization'] = 'Bearer ' + getToken();
return config;
},
function (error) {
// 對請求錯誤做些什麼
return Promise.reject(error);
}
);
一個響應攔截器的示例代碼如下:
axios.interceptors.response.use(
function (response) {
// 對響應數據做點什麼
return response;
},
function (error) {
// 對響應錯誤做點什麼
return Promise.reject(error);
}
);
攔截器可以對我們的請求和響應進行一些處理,例如在請求頭加入授權信息、在響應數據中過濾掉不需要的數據等等。
需要注意的是,我們可以通過axios.interceptors.request.eject()和axios.interceptors.response.eject()來刪除攔截器。
四、創建實例
在使用axios進行多次請求時,我們可能需要對一些公共參數進行統一的配置。此時,可以使用axios.create()方法創建一個axios實例,在該實例上進行配置。
示例代碼如下:
const instance = axios.create({
baseURL: 'https://api.example.com/api',
timeout: 5000,
headers: {
'Content-Type': 'application/json',
},
});
instance.get('/user', {
params: {
id: 1,
},
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
instance.post('/user', {
name: '張三',
age: 20,
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
在上述代碼中,我們通過axios.create()創建了一個實例,該實例中包含了baseURL、timeout、headers等配置。之後我們就可以通過該實例進行get和post請求,相當於在每個請求中都包含了上述的公共配置。
五、取消請求
在axios發送請求的過程中,有時候我們可能需要取消某個請求。axios提供了cancel token的方式來實現請求的取消。
使用cancel token的示例代碼如下:
// 創建一個取消令牌
const CancelToken = axios.CancelToken;
const source = CancelToken.source();
// 發送請求
axios.get('/user', {
cancelToken: source.token,
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
if (axios.isCancel(error)) {
console.log('請求已被取消:' + error.message);
} else {
console.log(error);
}
});
// 取消請求
source.cancel('手動取消請求');
上述代碼中,我們首先使用CancelToken.source()來創建一個取消令牌,將該取消令牌傳入我們的請求配置中。之後,在需要取消請求的時候,我們可以通過source.cancel()方法來手動取消請求。
六、重試請求
axios提供了重試機制來保證請求的可靠性。我們可以在axiosoptions中進行重試次數和重試間隔的配置。
示例代碼如下:
axios({
url: '/user',
method: 'get',
retry: 3,
retryDelay: 1000,
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
在上述代碼中,我們將retry設置為3,表示最多重試3次;將retryDelay設置為1000,表示重試間隔為1秒。
七、總結
通過以上的闡述,我們了解了axiosoptions在使用axios進行請求時的各個方面。我們可以設置請求參數、請求和響應攔截器、創建實例、取消請求、重試請求等等。這些功能使得我們能夠更好地處理介面調用過程中可能出現的各種情況,更加方便地進行開發。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/248240.html
微信掃一掃
支付寶掃一掃