Dzwonię do usługi sieciowej za pomocą funkcji pobierania, ale to samo mogę zrobić z pomocą axios. Więc teraz jestem zdezorientowany. Powinienem wybrać axios czy aportować?
ajax
reactjs
xmlhttprequest
es6-promise
es6-modules
Gorakh Nath
źródło
źródło
Odpowiedzi:
Fetch i Axios mają bardzo podobne funkcje, ale dla większej kompatybilności wstecznej Axios wydaje się działać lepiej (pobieranie nie działa na przykład w IE 11, sprawdź ten post )
Ponadto, jeśli pracujesz z żądaniami JSON, poniżej znajdują się pewne różnice, na które się natknąłem.
Pobierz żądanie publikacji JSON
Żądanie postu Axios JSON
Więc:
Mam nadzieję że to pomoże.
źródło
Axios request is ok when status is 200 and statusText is 'OK'
A co z innymi httpStatus z zakresu 2xx, takimi jak 201 lub 204?Są to biblioteki żądań HTTP ...
Kończę z tymi samymi wątpliwościami, ale tabela w tym poście skłania mnie do działania
isomorphic-fetch
. Co jest,fetch
ale działa z NodeJS.http://andrewhfarmer.com/ajax-libraries/
Powyższy link nie działa. Ta sama tabela jest tutaj: https://www.javascriptstuff.com/ajax-libraries/
Lub tu:
źródło
fetch
jako natywny (co oznacza, że możesz go po prostu użyć - nie ma potrzeby dołączania biblioteki , zgodnie ze źródłem tabeli), podczas gdy w rzeczywistości niefetch
jest zaimplementowany na niektórych platformach (szczególnie we wszystkich wersjach IE), dla których musisz podać i tak zewnętrzny polyfill.timeout
(co jest bardzo dziwne), musimy użyć oddzielnego modułu, aby zaimplementować tę podstawową funkcjonalność.Według mzabriskie na GitHub :
sprawdź Wsparcie przeglądarek Axios
Myślę, że powinieneś użyć axios.
źródło
Jeszcze jedna główna różnica między API pobierania a API Axios
źródło
Axios to samodzielny pakiet innej firmy, który można łatwo zainstalować w projekcie React za pomocą NPM.
Inną opcją, o której wspomniałeś, jest funkcja pobierania. W przeciwieństwie do Axios,
fetch()
jest wbudowany w większość nowoczesnych przeglądarek. Dzięki fetch nie musisz instalować pakietu innej firmy.Więc to zależy od ciebie, możesz iść
fetch()
i potencjalnie zepsuć, jeśli nie wiesz, co robisz LUB po prostu użyj Axios, co moim zdaniem jest prostsze.źródło
Ponadto ... bawiłem się różnymi bibliotekami w moim teście i zauważyłem ich różną obsługę żądań 4xx. W tym przypadku mój test zwraca obiekt json z odpowiedzią 400. Oto jak 3 popularne biblioteki obsługują odpowiedź:
Interesujące jest to
request-promise-native
iaxios
wrzuć odpowiedź 4xx, podczas gdynode-fetch
nie. Równieżfetch
używa obietnicę json parsowania.źródło
.throws
metodę testowania zgłaszanych błędów. W tym przypadku testowałem odrzucenia z bibliotek al 3 i zauważyłem różnicę w zwróconych danych.Korzyści z Axios:
Zalety
axios
ponadfetch
źródło