wails-app-dock/frontend/src/utils/axios/index.ts
2024-02-19 04:12:11 +08:00

64 lines
2.0 KiB
TypeScript

import type {AxiosInstance, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig} from "axios";
import axios from "axios";
import {ElNotification} from "element-plus";
export function getAxiosInstance(axiosRequestConfig: AxiosRequestConfig): AxiosInstance {
let instance = axios.create(axiosRequestConfig);
// 全局 请求拦截器
instance.interceptors.request.use(async (config: InternalAxiosRequestConfig) => {
let headers = config.headers || {}
return config;
})
// 全局 响应拦截器
instance.interceptors.response.use(successCB, rejectCB);
return instance;
}
// 请求成功回调
export function successCB(response: AxiosResponse | Promise<AxiosResponse>): AxiosResponse | Promise<AxiosResponse> {
function processResponse(response: AxiosResponse) {
if (response.status === 200) { // 响应成功
if (response.data.code === 401) {
ElNotification.warning({
message: "登录状态失效, 请重新登录",
})
console.log(response,response.data.msg)
} else if (response.data.code === 403) {
setTimeout(() => {
console.log(response,response.data.msg)
}, 0)
}
return response;
} else {
return Promise.reject(response);
}
}
if (response instanceof Promise) {
let resp: AxiosResponse
return new Promise((resolve)=>{
response.then((r: AxiosResponse) => {
resp = r;
resolve(processResponse(resp))
});
})
} else {
return processResponse(response);
}
}
// 请求失败回调
export function rejectCB(error: any): any {
let response = error.response
if(response.status === 401){
return response;
} else if(response.status === 403){
setTimeout(() => {
console.log(response.data.msg)
}, 0)
return response;
}
return Promise.reject(error);
}