diff --git a/frontend/components/ExampleComponent.tsx b/frontend/components/ExampleComponent.tsx index 224bdf6..936cba2 100644 --- a/frontend/components/ExampleComponent.tsx +++ b/frontend/components/ExampleComponent.tsx @@ -20,18 +20,30 @@ export default function ExampleComponent() { setError(null); try { - const response = await apiRequest('example', { + // Используем правильный endpoint с валидацией: /api/example/data + const response = await apiRequest('example/data', { method: 'POST', body: JSON.stringify({ name: 'Test', - value: '123', + value: 123, // Число, а не строка (валидатор требует numeric) }), }); if (response.success && response.data) { - setData(response.data); + setData({ + name: response.data.name, + value: String(response.data.value), // Преобразуем для отображения + }); } else { - setError(response.error || 'Unknown error'); + // Улучшенная обработка ошибок валидации + let errorMessage = response.error || 'Unknown error'; + if (response.errors && Array.isArray(response.errors)) { + const validationErrors = response.errors + .map((err: { msg?: string }) => err.msg || err) + .join(', '); + errorMessage = `Ошибка валидации: ${validationErrors}`; + } + setError(errorMessage); } } catch (err) { setError(err instanceof Error ? err.message : 'Failed to fetch data'); diff --git a/frontend/lib/api.ts b/frontend/lib/api.ts index 3a0624e..e320a4f 100644 --- a/frontend/lib/api.ts +++ b/frontend/lib/api.ts @@ -18,6 +18,7 @@ export interface ApiResponse { success: boolean; data?: T; error?: string; + errors?: Array<{ msg?: string; param?: string }>; // Ошибки валидации } export async function apiRequest( @@ -33,11 +34,18 @@ export async function apiRequest( }, }); - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); - } - 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);