54545
This commit is contained in:
44
frontend/src/api/config.js
Normal file
44
frontend/src/api/config.js
Normal file
@@ -0,0 +1,44 @@
|
||||
// Автоматическое определение 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;
|
||||
Reference in New Issue
Block a user