Ответ
Плюсы:
- Удобный API с поддержкой промисов
- Автоматическая трансформация JSON
- Перехватчики запросов и ответов (interceptors)
- Отмена запросов (CancelToken)
- Защита от XSRF
- Поддержка async/await
- Кроссбраузерность (работает и в Node.js, и в браузере)
Минусы:
- Дополнительный вес (~4KB минифицированный)
- Требует ручной отмены запросов при unmount компонента
- Не встроен в браузер (в отличие от fetch)
Пример использования:
axios.get('/user', {
params: { ID: 123 }
})
.then(response => console.log(response))
.catch(error => console.error(error)); Ответ 18+ 🔞
Ну вот, сидишь ты такой, фронтендер-распиздяй, и думаешь: "Какой же хуйней мне сегодня заняться? А, знаю! Напишу запрос на сервер!" И тут перед тобой, как на блюдечке, этот ваш axios, блядь.
Плюсы, которые тебя просто охуенно порадуют:
- API такой удобный, что прям хоть в рот бери. Промисы? Да, блядь, нате вам! Как горячие пирожки.
- Привезли тебе JSON — а он уже сам, сука, распаковался, как будто его мамка в детстве собирала. Автоматическая трансформация, ёпта!
- Перехватчики запросов и ответов (interceptors). Это как поставить шпиона в почтовое отделение: всё видит, всё слышит, может даже письмо подменить, хитрая жопа.
- Запрос начал, а потом передумал? Без проблем! Вот тебе
CancelToken— на, отмени эту поебень, если что. - Защита от XSRF. Не то чтобы прям пиздец как важно всегда, но когда надо — спасибо скажешь, что она есть, а не как с fetch, где самому надо городить.
async/awaitподдерживает. Красота, а не жизнь. Пишешь код, как будто он синхронный, а он, сука, асинхронный! Магия, блядь.- Работает везде: и в браузере, где ты обычно сидишь, и в Node.js, если вдруг на серверной стороне мозги поехали.
Но и минусы, от которых волосы ебут мозг:
- Весит, падла, лишние ~4KB. В эпоху, когда каждый килобайт на счету, это как привезти с собой на пикник кирпич. "На всякий случай, вдруг пригодится".
- Уходишь со страницы (unmount компонента), а запрос-то, сука, уже полетел! И летит себе, как хуй с горы. Надо не забыть его вручную отменить, а то память потечёт, и будет тебе пиздец, а не оптимизация.
- Он не встроен в браузер, в отличие от того же
fetch. Значит, тащи ещё одну зависимость, распиздяй. Ещё один пакетик вnode_modules, который через полгода устареет.
Ну и смотри, как это, блядь, выглядит в коде. Просто, как три копейки:
axios.get('/user', {
params: { ID: 123 }
})
.then(response => console.log(response))
.catch(error => console.error(error));
Вот и вся философия. Хочешь удобства и мощи — бери axios и не парься. Не хочешь тащить лишнее — иди нахуй с его fetch, там свои грабли есть, и не меньше. Выбор, как всегда, за тобой, чувак.