Проверяет умение корректно обрабатывать HTTP-статус 404 при запросах к API, чтобы приложение не падало и давало пользователю понятную обратную связь.
HTTP-статус 404 означает, что сервер не нашёл ресурс по указанному URL. В контексте поиска по API это нормальная ситуация: пользователь ввёл запрос, по которому ничего не совпало. Важно не путать 404 с ошибками 500 или сетевыми сбоями — это разные категории, и обрабатывать их нужно по-разному.
Метод fetch отклоняет промис только при сетевых сбоях (нет соединения, DNS не разрешился). Если сервер ответил любым HTTP-статусом, включая 404 или 500, промис успешно разрешается. Поэтому проверять нужно вручную через response.ok или response.status.
async function searchItems(query) {
const res = await fetch(`/api/search?q=${encodeURIComponent(query)}`);
if (res.status === 404) {
// Ничего не найдено — это не ошибка, а пустой результат
return { items: [], notFound: true };
}
if (!res.ok) {
// 500, 403 и прочие — реальные ошибки
throw new Error(`Request failed: ${res.status}`);
}
return { items: await res.json(), notFound: false };
}
// Использование
try {
const { items, notFound } = await searchItems('react');
if (notFound) showEmptyState('Ничего не найдено');
else renderList(items);
} catch (e) {
showError('Что-то пошло не так, попробуйте позже');
}
Итог: 404 при поиске — это ожидаемый результат, а не сбой. Обрабатывайте его как отдельное состояние «ничего не найдено», отделяя от настоящих ошибок, чтобы приложение оставалось предсказуемым и удобным для пользователя.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию