Compare commits

..

No commits in common. "d27c4a0946ad63cacc5f95a29704988fb7cc720c" and "6b75b8ddb257ad09fe178fb2be2ae101711dbf7c" have entirely different histories.

2 changed files with 7 additions and 27 deletions

View File

@ -20,30 +20,18 @@ export default function ExampleComponent() {
setError(null); setError(null);
try { try {
// Используем правильный endpoint с валидацией: /api/example/data const response = await apiRequest<ApiData>('example', {
const response = await apiRequest<ApiData>('example/data', {
method: 'POST', method: 'POST',
body: JSON.stringify({ body: JSON.stringify({
name: 'Test', name: 'Test',
value: 123, // Число, а не строка (валидатор требует numeric) value: '123',
}), }),
}); });
if (response.success && response.data) { if (response.success && response.data) {
setData({ setData(response.data);
name: response.data.name,
value: String(response.data.value), // Преобразуем для отображения
});
} else { } 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) { } catch (err) {
setError(err instanceof Error ? err.message : 'Failed to fetch data'); setError(err instanceof Error ? err.message : 'Failed to fetch data');

View File

@ -18,7 +18,6 @@ export interface ApiResponse<T = unknown> {
success: boolean; success: boolean;
data?: T; data?: T;
error?: string; error?: string;
errors?: Array<{ msg?: string; param?: string }>; // Ошибки валидации
} }
export async function apiRequest<T = unknown>( export async function apiRequest<T = unknown>(
@ -34,18 +33,11 @@ export async function apiRequest<T = unknown>(
}, },
}); });
const data = await response.json();
// Если статус не успешный, возвращаем данные с ошибкой
// (могут содержать детали валидации)
if (!response.ok) { if (!response.ok) {
return { throw new Error(`HTTP error! status: ${response.status}`);
success: false,
error: data.error || `HTTP error! status: ${response.status}`,
errors: data.errors, // Ошибки валидации, если есть
};
} }
const data = await response.json();
return data; return data;
} catch (err) { } catch (err) {
console.error('API Error:', err); console.error('API Error:', err);