Я вызываю веб-сервис с помощью fetch, но то же самое я могу сделать с помощью axios. Так что теперь я в замешательстве. Должен ли я пойти на аксиос или получить?
ajax
reactjs
xmlhttprequest
es6-promise
es6-modules
Горак Натх
источник
источник
Ответы:
Fetch и Axios очень похожи по функциональности, но для большей обратной совместимости Axios, кажется, работает лучше (fetch не работает в IE 11, например, проверьте этот пост )
Кроме того, если вы работаете с JSON-запросами, ниже приведены некоторые различия, с которыми я столкнулся.
Получить запрос JSON
Почтовый запрос Axios JSON
Так:
Надеюсь это поможет.
источник
Axios request is ok when status is 200 and statusText is 'OK'
А как насчет других httpStatus в диапазоне 2xx, например, 201 или 204?Это библиотеки HTTP-запросов ...
Я в конечном итоге с тем же сомнением, но таблица в этом посте заставляет меня идти с
isomorphic-fetch
. Что,fetch
но работает с NodeJS.http://andrewhfarmer.com/ajax-libraries/
Ссылка выше не работает. Та же таблица находится здесь: https://www.javascriptstuff.com/ajax-libraries/
Или здесь:
источник
fetch
как Native (имеется в виду, что вы можете просто использовать его - нет необходимости включать библиотеку , соответственно источнику таблицы), хотя на самом делеfetch
он не реализован на некоторых платформах (особенно во всех версиях IE), для которых вам необходимо предоставить внешний полифилл в любом случае.timeout
(что очень странно), мы должны использовать отдельный модуль для реализации этой базовой функциональности.По словам мзабриски на GitHub :
пожалуйста, проверьте поддержку браузера Axios
Я думаю, что вы должны использовать Axios.
источник
Еще одно существенное отличие между API выборки и API Axios
источник
Axios - это автономный сторонний пакет, который можно легко установить в проект React с помощью NPM.
Другой вариант, который вы упомянули, это функция выборки. В отличие от Axios,
fetch()
встроен в большинство современных браузеров. С fetch вам не нужно устанавливать сторонний пакет.Так что решать вам, вы можете пойти
fetch()
и, возможно, испортить ситуацию, если не знаете, что делаете, или просто использовать Axios, что, на мой взгляд, более просто.источник
Кроме того ... Я играл с разными библиотеками в моем тесте и заметил, что они по-разному обрабатывают запросы 4xx. В этом случае мой тест возвращает объект json с ответом 400. Вот как 3 популярные библиотеки обрабатывают ответ:
Интересно, что
request-promise-native
иaxios
бросить на 4xx ответа покаnode-fetch
нет. Такжеfetch
использует обещание для разбора JSON.источник
.throws
метод для проверки ошибок. В этом случае я тестировал отклонения от всех 3 библиотек и заметил разницу в данных, которые были возвращены.Преимущества Axios:
Преимущества
axios
болееfetch
источник