import axios from "axios";
import Vue from "vue";
import { message } from "ant-design-vue";
const url= ***;
const token='123456'
const $http = axios.create({
baseURL: `${url}/api`,
timeout: 60000,
});
Vue.prototype.$http = $http;
// 攔截處理器
const errorHandler = (error) => {
if (error.toString().includes("timeout")) {
message.error("請(qǐng)求超時(shí)");
return Promise.reject(error);
} else {
if (error.response) {
const data = error.response.data;
if (error.response.status === 403) {
message.error(data.message);
logout();
}
if (error.response.status === 401) {
message.destroy();
message.error("登錄過期,請(qǐng)重新登錄!");
accessToken.remove();
logout();
}
}
return Promise.reject(error);
}
};
[$http].forEach((item) => {
// 添加請(qǐng)求攔截器
item.interceptors.request.use((config) => {
if (/get/i.test(config.method)) {
// 判斷get請(qǐng)求
config.params = config.params || {};
config.params._t = Date.parse(new Date()) / 1000; // 添加時(shí)間戳
}
config.headers["Authorization"] = `Bearer ${token}`;
return config;
}, errorHandler);
//添加響應(yīng)攔截器
item.interceptors.response.use((response) => {
if (response.status === 401) {
logout();
}
let dataAxios = response.data;
const { status } = dataAxios;
if (status !== "complete") {
message.error(dataAxios.errorMessage || "請(qǐng)求錯(cuò)誤!");
return Promise.reject(dataAxios);
}
return dataAxios;
}, errorHandler);
});
// export { $httpyx };
vue 封裝一個(gè)http.js
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 調(diào)用方法 get longGet 請(qǐng)求等待時(shí)間較長,比普通請(qǐng)求多了一個(gè)loading post 和 longPos...
- 安裝axios npm install axios --save 新建一個(gè)js文件任意取名,這里是http.js ...