В чем разница между fetch и axios?
DOM и браузер
`fetch` — встроенный в браузер API запросов на промисах, а `axios` — внешняя библиотека с более богатым функционалом «из коробки».
fetch (встроенный)
const res = await fetch('/api/users');
if (!res.ok) throw new Error(res.status); // 4xx/5xx не ошибка сама по себе
const data = await res.json(); // ручной парсинг- Встроен, без зависимостей.
- 4xx/5xx не отклоняют промис — надо проверять
res.ok. - Нужен ручной
res.json(). - Нет встроенных интерсепторов и таймаутов (таймаут — через
AbortController).
axios (библиотека)
const { data } = await axios.get('/api/users'); // JSON распарсен- Автопарсинг JSON (
response.data). - 4xx/5xx попадают в `catch`.
- Интерсепторы запросов/ответов (добавить токен, обработать ошибки).
- Таймауты, отмена,
baseURL, трансформации из коробки. - Внешняя зависимость (+ размер бандла).
Различия
- Ошибки: fetch — только сетевые; axios — и HTTP-статусы.
- Парсинг: fetch — ручной; axios — авто.
- Интерсепторы/таймауты: fetch — вручную; axios — встроены.
Как выбирать
- Простые запросы, минимум зависимостей → fetch.
- Много запросов, интерсепторы, единая обработка ошибок → axios.
Коротко для собеседования
fetch — встроенный, промисный, но 4xx/5xx не считает ошибкой, требует ручного res.json(), без интерсепторов/таймаутов. axios — библиотека с автопарсингом, интерсепторами, таймаутами и трактовкой статусов как ошибок, ценой зависимости.