PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

В чем разница между 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 — библиотека с автопарсингом, интерсепторами, таймаутами и трактовкой статусов как ошибок, ценой зависимости.

Другие вопросы раздела