This commit is contained in:
wushumin
2026-05-11 15:28:27 +08:00
commit edd1a02157
302 changed files with 67193 additions and 0 deletions

2072
admin-web/src/api/admin.ts Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,63 @@
import axios from "axios";
import { clearAdminSession, getAdminToken } from "../utils/auth";
import { resolveApiBaseUrl } from "../utils/env";
import { goToAdminLogin } from "../utils/navigation";
interface ApiPayload {
code?: number;
message?: string;
data?: unknown;
}
function redirectToLoginOnUnauthorized() {
clearAdminSession();
goToAdminLogin();
}
const request = axios.create({
baseURL: resolveApiBaseUrl(),
timeout: 20000,
});
request.interceptors.request.use((config) => {
const token = getAdminToken();
if (token) {
config.headers = config.headers || {};
config.headers.Authorization = `Bearer ${token}`;
}
return config;
});
request.interceptors.response.use(
(response) => {
if (response.config.responseType === "blob" || response.config.responseType === "arraybuffer") {
return response.data as any;
}
const payload = response.data as ApiPayload;
if (payload?.code === 0) {
return payload as any;
}
if (payload?.code === 401) {
redirectToLoginOnUnauthorized();
}
const error = new Error(payload?.message || "请求失败") as Error & {
payload?: ApiPayload;
status?: number;
};
error.payload = payload;
error.status = response.status;
return Promise.reject(error);
},
(error) => {
const status = error?.response?.status;
if (status === 401) {
redirectToLoginOnUnauthorized();
}
return Promise.reject(error);
},
);
export default request;