Fetch API to nowoczesne narzędzie w JavaScript, które umożliwia wykonywanie żądań HTTP z poziomu przeglądarki. Zostało wprowadzone jako natywna alternatywa dla starszego rozwiązania, jakim jest XMLHttpRequest
. Fetch API pozwala programistom na bardziej przejrzyste i uproszczone pisanie kodu, co jest niezwykle istotne w kontekście dynamicznych aplikacji webowych, które często komunikują się z serwerem.
Fetch API bazuje na wykorzystaniu obietnic (Promises), co ułatwia obsługę asynchronicznych operacji sieciowych. Dzięki temu można z łatwością wykonać żądanie do serwera, przetworzyć odpowiedź i zająć się ewentualnymi błędami w sposób zorganizowany i czytelny. W praktyce, Fetch API jest najczęściej używane do wykonywania żądań GET, POST, PUT, DELETE, co pokrywa większość operacji CRUD w aplikacjach webowych.
Przykłady użycia Fetch API
Fetch API jest wyjątkowo elastyczne i pozwala na różnorodne zastosowania. Poniżej kilka przykładów najczęściej spotykanych operacji.
GET: Pobieranie danych
fetch('https://api.example.com/data')
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => console.log(data))
.catch(error => console.error('There was a problem with your fetch operation:', error));
POST: Wysyłanie danych
fetch('https://api.example.com/data', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ key: 'value' })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
PUT: Aktualizacja danych
fetch('https://api.example.com/data/1', {
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ key: 'updatedValue' })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
DELETE: Usuwanie danych
fetch('https://api.example.com/data/1', {
method: 'DELETE'
})
.then(() => console.log('Data deleted'))
.catch(error => console.error('Error:', error));
Zalety i wady Fetch API
Zalety:
- Prostota użycia: Fetch API jest łatwe w użyciu i dostępne bez dodatkowych bibliotek, co sprawia, że idealnie nadaje się do prostych projektów.
- Natywna obsługa w przeglądarkach: Fetch jest standardem wspieranym przez większość nowoczesnych przeglądarek, co eliminuje potrzebę korzystania z zewnętrznych rozwiązań.
- Obsługa obietnic (Promises): Fetch API wykorzystuje Promises, co sprawia, że kod jest bardziej zorganizowany i czytelny.
Wady:
- Brak domyślnej obsługi błędów: Fetch nie rzuca błędów dla odpowiedzi z kodem 4xx lub 5xx, co wymaga dodatkowej obsługi w kodzie.
- Brak timeouta: Fetch nie posiada natywnej obsługi timeoutu, co może prowadzić do niekontrolowanych blokad w przypadku problemów z połączeniem.
- Brak retry’ów: W Fetch API nie ma wbudowanej funkcji automatycznego ponawiania nieudanych żądań, co jest problematyczne w aplikacjach wymagających wysokiej niezawodności.
Fetch API w popularnych frameworkach
Fetch API jest szeroko stosowane w popularnych frameworkach, takich jak React, Angular i Vue.js. W przypadku Reacta, Fetch API jest często wykorzystywane w komponentach funkcyjnych oraz klasowych do pobierania danych podczas cyklu życia komponentu. Angular i Vue.js również wspierają Fetch, chociaż często preferowane są bardziej zaawansowane biblioteki, jak Axios.
Aby dowiedzieć się więcej o ciekawych bibliotekach JS, które pomogą zoptymalizować działanie Twojej aplikacji, zapraszam do zapoznania się z artykułem o tym jak dodać Partytown do WP.
Biblioteka KY
KY to nowoczesna biblioteka JavaScript, która opiera się na Fetch API, ale oferuje dodatkowe funkcje i uproszczenia, które ułatwiają pracę z żądaniami HTTP. Cory House, znany programista i mówca, zwrócił uwagę na KY w jednym ze swoich tweetów, podkreślając, że KY oferuje bardziej intuicyjne API, lepszą obsługę błędów, retry’ów oraz timeoutów, a także lepsze wsparcie dla TypeScriptu.
Using fetch? Consider Ky.
— Cory House (@housecor) July 23, 2024
Benefits:
– Simpler API – Requires about half the code
– Treats non-2xx status codes as errors
– Includes timeout support
– Retries failed requests
– Better TS support. json() resolves to unknown
Here's fetch vs Ky – literally half the code. 🔥 pic.twitter.com/YZIEMcXUgF
Przykład wysyłania żądania POST za pomocą KY:
import ky from 'ky';
const response = await ky.post('https://api.example.com/data', {
json: { key: 'value' }
}).json();
console.log(response);
Zalety KY:
- Prostsze API: KY oferuje uproszczone funkcje, które zmniejszają ilość kodu potrzebnego do wykonania podstawowych operacji.
- Automatyczna obsługa błędów: KY automatycznie rzuca wyjątki dla odpowiedzi z kodem 4xx i 5xx, co upraszcza zarządzanie błędami.
- Retry i timeout: Biblioteka KY oferuje wbudowane retry oraz timeout, co zwiększa niezawodność aplikacji.
- Obsługa TypeScript: KY jest doskonale przystosowane do pracy z TypeScript, co czyni ją atrakcyjną opcją dla dużych projektów.
Co myślę o KY na bazie swoich doświadczeń z używaniem Fetch API
Jako programista, który miał okazję pracować zarówno z Fetch API, jak i KY. Muszę przyznać, że KY znacznie ułatwia pracę przy bardziej złożonych projektach. Choć Fetch API jest wystarczające w prostszych przypadkach, to KY, dzięki swoim dodatkowym funkcjom, oszczędza w znacznym stopniu czas. KY stało się dla mnie narzędziem pierwszego wyboru w projektach, gdzie niezawodność i czytelność kodu są kluczowe.
Podsumowanie i dalsza lektura
Fetch API pozostaje solidnym wyborem dla programistów, zwłaszcza w mniejszych projektach. Jednak KY to potężne narzędzie, które warto rozważyć w bardziej wymagających aplikacjach. Jeśli jeszcze nie miałeś okazji pracować z KY, zdecydowanie polecam zapoznanie się z jej dokumentacją na GitHub. Dodatkowo, warto obejrzeć nagranie Theo.
FAQ
Fetch API to natywna metoda JavaScript, umożliwiająca wykonywanie żądań HTTP z przeglądarki, zastępując starsze metody takie jak XMLHttpRequest
.
Fetch API nie obsługuje domyślnie błędów w odpowiedziach innych niż 2xx, brakuje mu również wbudowanego timeoutu i retry’ów.
KY oferuje prostsze API, automatyczną obsługę błędów, retry’ów oraz timeoutów, co czyni je bardziej niezawodnym rozwiązaniem w większych projektach.
Tak, KY ma doskonałe wsparcie dla TypeScript, co czyni je idealnym wyborem dla projektów wymagających silnego typowania.
Chociaż KY jest bardzo wszechstronne, Fetch API może być bardziej odpowiednie w prostszych aplikacjach.
Aby rozpocząć korzystanie z KY, wystarczy zainstalować bibliotekę za pomocą npm lub yarn, a następnie zaimportować.
Dodaj komentarz