Files
nixcn-cms/client/src/lib/axios.ts
2025-12-24 18:51:25 +00:00

31 lines
769 B
TypeScript

import type { AxiosError } from 'axios';
import axios from 'axios';
import { router } from '@/lib/router';
import { getToken, hasToken } from './token';
export const axiosClient = axios.create({
baseURL: '/api/',
});
axiosClient.interceptors.request.use((config) => {
const token = getToken();
if (token !== null) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
});
axiosClient.interceptors.response.use(undefined, async (error: AxiosError) => {
if (error.response && error?.response.status === 401) {
// TODO: refresh token
if (!hasToken()) {
await router.navigate({ to: '/login' });
return;
}
if (error.config) {
return axiosClient(error.config);
}
}
return Promise.reject(error);
});