В чем разница между AJAX, XMLHttpRequest, Fetch и Axios?
DOM и браузер
AJAX — это концепция асинхронных запросов из браузера; XMLHttpRequest, Fetch и Axios — конкретные способы её реализации.
AJAX
AJAX (Asynchronous JavaScript and XML) — не API, а подход: обновлять данные с сервера без перезагрузки страницы. Название историческое (XML), сейчас чаще JSON. Реализуется через XHR или Fetch.
XMLHttpRequest (XHR)
Старый встроенный API для запросов. Работает, но многословен, на колбэках/событиях:
const xhr = new XMLHttpRequest();
xhr.open('GET', '/api');
xhr.onload = () => console.log(xhr.responseText);
xhr.send();Fetch
Современный встроенный API на промисах:
const res = await fetch('/api');
const data = await res.json();- Проще XHR, промисный.
- Минусы: 4xx/5xx не считаются ошибкой (нужно проверять
res.ok), нет встроенных таймаутов/интерсепторов, ручнойres.json().
Axios
Библиотека (не встроена) поверх XHR с богатым API:
- Автопарсинг JSON, интерсепторы, таймауты, отмена, 4xx/5xx →
catch.
Соотношение
- AJAX — идея (асинхронные запросы).
- XHR — старая реализация.
- Fetch — современная встроенная реализация.
- Axios — удобная библиотека-обёртка.
Коротко для собеседования
AJAX — концепция асинхронных запросов без перезагрузки. XMLHttpRequest — старый многословный API на колбэках. Fetch — современный встроенный на промисах (но 4xx/5xx не ошибка, нет интерсепторов). Axios — внешняя библиотека с автопарсингом, интерсепторами и обработкой статусов.