mirror of
https://github.com/jiangrui1994/CloudSaver.git
synced 2026-01-12 16:18:45 +08:00
feat:版本迭代
This commit is contained in:
@@ -1,28 +1,63 @@
|
||||
import axios, { AxiosResponse } from "axios";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { RequestResult } from "../types/response";
|
||||
|
||||
const request = axios.create({
|
||||
const axiosInstance = axios.create({
|
||||
baseURL: import.meta.env.VITE_API_BASE_URL as string,
|
||||
timeout: 60000,
|
||||
timeout: 9000,
|
||||
withCredentials: true,
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
});
|
||||
|
||||
request.interceptors.response.use(
|
||||
(response: AxiosResponse) => {
|
||||
const res = response.data;
|
||||
if (!res.success) {
|
||||
ElMessage.error(res.error || "请求失败");
|
||||
return Promise.reject(new Error(res.error || "请求失败"));
|
||||
function isLoginAndRedirect(url: string) {
|
||||
return url.includes("/api/user/login") || url.includes("/api/user/register");
|
||||
}
|
||||
|
||||
axiosInstance.interceptors.request.use(
|
||||
(config) => {
|
||||
const token = localStorage.getItem("token");
|
||||
if (token) {
|
||||
config.headers.Authorization = `Bearer ${token}`;
|
||||
} else if (!isLoginAndRedirect(config.url || "")) {
|
||||
ElMessage.error("请先登录");
|
||||
window.location.href = "/login";
|
||||
}
|
||||
return res;
|
||||
return config;
|
||||
},
|
||||
(error) => {
|
||||
ElMessage.error(error.message || "网络错误");
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
||||
|
||||
axiosInstance.interceptors.response.use(
|
||||
(response: AxiosResponse) => {
|
||||
const res = response.data;
|
||||
return res;
|
||||
},
|
||||
(error) => {
|
||||
if (error.response.status === 401) {
|
||||
ElMessage.error("登录过期,请重新登录");
|
||||
localStorage.removeItem("token");
|
||||
window.location.href = "/login";
|
||||
return Promise.reject(new Error("登录过期,请重新登录"));
|
||||
}
|
||||
ElMessage.error(error.response.statusText);
|
||||
return Promise.reject(new Error(error.response.statusText));
|
||||
}
|
||||
);
|
||||
|
||||
const request = {
|
||||
get: <T>(
|
||||
url: string,
|
||||
config?: Record<string, any>
|
||||
): Promise<RequestResult<T>> => {
|
||||
return axiosInstance.get(url, { ...config });
|
||||
},
|
||||
post: axiosInstance.post,
|
||||
put: axiosInstance.put,
|
||||
delete: axiosInstance.delete,
|
||||
};
|
||||
|
||||
export default request;
|
||||
|
||||
Reference in New Issue
Block a user