imeeting/frontend/src/api/http.ts

39 lines
994 B
TypeScript
Raw Normal View History

import axios from "axios";
const http = axios.create({
baseURL: "",
timeout: 15000
});
http.interceptors.request.use((config) => {
const token = localStorage.getItem("accessToken");
if (token) {
config.headers = config.headers || {};
config.headers.Authorization = `Bearer ${token}`;
}
return config;
});
http.interceptors.response.use(
(resp) => {
const body = resp.data;
if (body && body.code !== "0") {
return Promise.reject(new Error(body.msg || "请求失败"));
}
return resp;
},
(error) => {
if (error.response && (error.response.status === 401 || error.response.status === 403)) {
// Clear session/local storage
localStorage.removeItem("accessToken");
localStorage.removeItem("refreshToken");
sessionStorage.removeItem("userProfile");
// Force redirect to login with timeout flag
window.location.href = "/login?timeout=1";
}
return Promise.reject(error);
}
);
export default http;