axios.ts 989 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import axios, { AxiosInstance } from "axios";
  2. export const createAxiosInstance = (baseURL: string): AxiosInstance => {
  3. const instance = axios.create({
  4. baseURL,
  5. timeout: 10000,
  6. headers: {
  7. "Content-Type": "application/json",
  8. },
  9. });
  10. instance.interceptors.request.use((config) => {
  11. const token = localStorage.getItem("token");
  12. const lang = localStorage.getItem("selectedLanguage") || "en";
  13. if (lang) {
  14. config.headers["Accept-Language"] = lang;
  15. }
  16. if (token) {
  17. config.headers.Authorization = `Bearer ${token}`;
  18. }
  19. return config;
  20. });
  21. instance.interceptors.response.use(
  22. (response) => response.data,
  23. (error) => {
  24. if (error.response?.status === 401) {
  25. localStorage.removeItem("token");
  26. localStorage.removeItem("refreshToken");
  27. localStorage.removeItem("accountInfo");
  28. window.location.href = "/login";
  29. }
  30. return Promise.reject(error);
  31. }
  32. );
  33. return instance;
  34. };