bnk-components
Version:
Reusable React components for Issaglam UI - Modern, responsive UI components with TypeScript support
56 lines (55 loc) • 1.86 kB
JavaScript
import axios from 'axios';
const getBaseUrl = () => {
if (process.env.NODE_ENV === 'development') {
return process.env.REACT_APP_API_URL_DEV || 'https://localhost:7282';
}
else if (process.env.NODE_ENV === 'test') {
return process.env.REACT_APP_API_URL_TEST || 'https://localhost:7282';
}
else {
return process.env.REACT_APP_API_URL_PROD || 'https://api.issaglam.com';
}
};
console.log('API Base URL:', getBaseUrl());
const api = axios.create({
baseURL: getBaseUrl(),
timeout: 99999,
headers: {
'Content-Type': 'application/json',
}
});
// Request interceptor - token ekleme
api.interceptors.request.use((config) => {
var _a;
console.log('API Request:', (_a = config.method) === null || _a === void 0 ? void 0 : _a.toUpperCase(), config.url);
console.log('Request Config:', config);
const token = localStorage.getItem('authToken');
if (token && config.headers) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
}, (error) => {
console.error('Request Error:', error);
return Promise.reject(error);
});
// Response interceptor - oturum kontrolü ve hata yönetimi
api.interceptors.response.use((response) => {
console.log('API Response:', response.status, response.config.url);
return response;
}, (error) => {
console.error('API Error Details:', {
message: error.message,
code: error.code,
response: error.response,
request: error.request,
config: error.config
});
if (error.response && error.response.status === 401) {
// Token'ı temizle
localStorage.removeItem('authToken');
// Oturum düştü, event fırlat
window.dispatchEvent(new CustomEvent('session-expired'));
}
return Promise.reject(error);
});
export default api;