45 lines
1.5 KiB
JavaScript
45 lines
1.5 KiB
JavaScript
// Автоматическое определение API URL без необходимости env переменных
|
|
// Работает на localhost, IP адресе или доменном имени
|
|
|
|
const API_CONFIG = {
|
|
// Определяй базовый URL на основе текущего location
|
|
// Фронтенд обращается к /api, nginx перенаправляет на backend внутри Docker сети
|
|
getBaseUrl: () => {
|
|
// Используем относительный путь /api вместо абсолютного URL
|
|
// Например: http://localhost:3000/api или http://185.56.162.170:8080/api
|
|
return '/api';
|
|
},
|
|
|
|
// Получить полный URL для API запроса
|
|
getApiUrl: (endpoint) => {
|
|
const baseUrl = API_CONFIG.getBaseUrl();
|
|
// Убираем слэш в начале endpoint если есть
|
|
const cleanEndpoint = endpoint.startsWith('/') ? endpoint.slice(1) : endpoint;
|
|
return `${baseUrl}/${cleanEndpoint}`;
|
|
},
|
|
|
|
// Хелпер для fetch запросов
|
|
fetch: async (endpoint, options = {}) => {
|
|
const url = API_CONFIG.getApiUrl(endpoint);
|
|
const defaultHeaders = {
|
|
'Content-Type': 'application/json',
|
|
};
|
|
|
|
const response = await fetch(url, {
|
|
...options,
|
|
headers: {
|
|
...defaultHeaders,
|
|
...options.headers,
|
|
},
|
|
});
|
|
|
|
if (!response.ok) {
|
|
throw new Error(`API Error: ${response.status} ${response.statusText}`);
|
|
}
|
|
|
|
return response.json();
|
|
},
|
|
};
|
|
|
|
export default API_CONFIG;
|