Compare commits
No commits in common. "d27c4a0946ad63cacc5f95a29704988fb7cc720c" and "6b75b8ddb257ad09fe178fb2be2ae101711dbf7c" have entirely different histories.
d27c4a0946
...
6b75b8ddb2
@ -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');
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user