csa-dashboard-sementara/csa-dashboard/lib/api-client.ts

32 lines
731 B
TypeScript

import axios from "axios";
import { env } from "@/config/env";
export const apiClient = axios.create({
baseURL: env.apiBaseUrl,
headers: {
"Content-Type": "application/json",
},
});
apiClient.interceptors.request.use((config) => {
config.headers["x-api-key"] = env.apiKey;
const token = localStorage.getItem("token");
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
});
apiClient.interceptors.response.use(
(response) => response,
(error) => {
if (error.response?.status === 401) {
localStorage.removeItem("token");
window.location.href = "/login";
}
return Promise.reject(error);
}
);