1、cnpm i axios -S
2、直接上代碼(根據項目配置,自行更改代碼)
import axios from 'axios';
import { notification } from 'antd';
import $$ from 'cmn-utils';
// 創建axios實例
const headers = (function(){
let token = $$.getStore("token")
return token ? { Auth: token } : {}
})()
const service = axios.create({
baseURL: '',
timeout: 15000, // 請求超時時間
headers
})
const codeMessage = {
200: '服務器成功返回請求的數據。',
201: '新建或修改數據成功。',
202: '一個請求已經進入後臺排隊(異步任務)。',
204: '刪除數據成功。',
400: '發出的請求有錯誤,服務器沒有進行新建或修改數據的操作。',
401: '用戶沒有權限(令牌、用戶名、密碼錯誤)。',
403: '用戶得到授權,但是訪問是被禁止的。',
404: '發出的請求針對的是不存在的記錄,服務器沒有進行操作。',
406: '請求的格式不可得。',
410: '請求的資源被永久刪除,且不會再得到的。',
422: '當創建一個對象時,發生一個驗證錯誤。',
500: '服務器發生錯誤,請檢查服務器。',
502: '網關錯誤。',
503: '服務不可用,服務器暫時過載或維護。',
504: '網關超時。',
};
service.interceptors.response.use(
function (response) {
//請求正常則返回
if (response.status === 200) {
return Promise.resolve(response.data)
} else if (response.status === 403) {
// 未登錄或者登陸失效
return Promise.resolve(response.data)
}
notification.error({
message: response.status,
description: response.statusText,
});
},
function (error) {
// 請求錯誤則向store commit這個狀態變化
const httpError = {
hasError: true,
status: error.response.status,
statusText: error.response.statusText,
info: codeMessage[error.response.status] || ""
}
notification.error({
message: httpError.status,
description: httpError.statusText,
info: codeMessage[error.response.status] || ""
});
return Promise.reject(error)
}
)
export default service