// Утилиты для работы с API const getApiUrl = (): string => { if (typeof window === 'undefined') { // SSR return process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3001'; } const isLocalhost = window.location.hostname === 'localhost'; return isLocalhost ? 'http://localhost:3001' : process.env.NEXT_PUBLIC_API_URL || 'https://your-api-domain.com'; }; export const apiUrl = getApiUrl(); export interface ApiResponse { success: boolean; data?: T; error?: string; errors?: Array<{ msg?: string; param?: string }>; // Ошибки валидации } export async function apiRequest( endpoint: string, options: RequestInit = {} ): Promise> { try { const response = await fetch(`${apiUrl}/api/${endpoint}`, { ...options, headers: { 'Content-Type': 'application/json', ...options.headers, }, }); const data = await response.json(); // Если статус не успешный, возвращаем данные с ошибкой // (могут содержать детали валидации) if (!response.ok) { return { success: false, error: data.error || `HTTP error! status: ${response.status}`, errors: data.errors, // Ошибки валидации, если есть }; } return data; } catch (err) { console.error('API Error:', err); return { success: false, error: err instanceof Error ? err.message : 'Unknown error', }; } }