Какие плюсы и минусы fetch?
DOM и браузер
У `fetch` есть плюсы (встроен, промисный, простой) и минусы (4xx/5xx не ошибка, нет интерсепторов/таймаутов, ручной парсинг).
Плюсы
- Встроен в браузер — без зависимостей и лишнего размера бандла.
- Промисный API — работает с
async/await. - Гибкий — потоковые ответы (streams), контроль над запросом.
- Стандарт — доступен и в современном Node.js.
- Отмена — через
AbortController.
const res = await fetch('/api/users');
const data = await res.json();Минусы
- 4xx/5xx не отклоняют промис — нужно вручную проверять
res.ok:
if (!res.ok) throw new Error(res.status);- Ручной парсинг —
res.json()отдельным шагом. - Нет интерсепторов — общую логику (токен, обработка ошибок) пишут вручную.
- Нет встроенного таймаута — только через
AbortController. - Нет автосериализации — тело сериализуют вручную (
JSON.stringify), заголовки задают сами. - Прогресс загрузки — не из коробки.
fetch против axios
Axios решает многие минусы (интерсепторы, автопарсинг, статусы как ошибки, таймауты), но это внешняя зависимость.
Коротко для собеседования
Плюсы fetch: встроен, промисный, гибкий, есть отмена через AbortController. Минусы: 4xx/5xx не считаются ошибкой (res.ok вручную), ручной res.json(), нет интерсепторов и таймаутов, ручная сериализация. Для сложных случаев удобнее axios ценой зависимости.