dressed_for_succes_store/frontend/services/api.ts

45 lines
1.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import axios from 'axios';
// Создаем экземпляр axios с базовыми настройками
const api = axios.create({
baseURL: process.env.NEXT_PUBLIC_API_URL || 'http://127.0.0.1:8000/api',
headers: {
'Content-Type': 'application/json',
},
});
// Перехватчик запросов для добавления токена авторизации
api.interceptors.request.use(
(config) => {
const token = localStorage.getItem('token');
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
},
(error) => Promise.reject(error)
);
// Перехватчик ответов для обработки ошибок
api.interceptors.response.use(
(response) => response,
async (error) => {
const originalRequest = error.config;
// Если ошибка 401 (неавторизован) и это не повторный запрос
if (error.response.status === 401 && !originalRequest._retry) {
originalRequest._retry = true;
// Здесь можно добавить логику обновления токена
// Например, перенаправление на страницу входа
if (typeof window !== 'undefined') {
localStorage.removeItem('token');
window.location.href = '/login';
}
}
return Promise.reject(error);
}
);
export default api;