import axios from 'axios'; // Create axios instance with base configuration const api = axios.create({ baseURL: process.env.REACT_APP_API_BASE_URL, timeout: 10000, headers: { 'Content-Type': 'application/json', }, }); // Request interceptor api.interceptors.request.use( (config) => { // Add auth token if available const token = localStorage.getItem('authToken'); if (token) { config.headers.Authorization = `Bearer ${token}`; } console.log('API Request:', config.method?.toUpperCase(), config.url); return config; }, (error) => { console.error('Request Error:', error); return Promise.reject(error); } ); // Response interceptor api.interceptors.response.use( (response) => { console.log('API Response:', response.status, response.config.url); return response; }, (error) => { console.error('Response Error:', error.response?.status, error.response?.data); // Handle common error cases if (error.response?.status === 401) { // Unauthorized - redirect to login or refresh token localStorage.removeItem('authToken'); // You can add redirect logic here } else if (error.response?.status === 500) { // Server error console.error('Server Error:', error.response.data); } return Promise.reject(error); } ); export default api;