
Fetch w JavaScript: Jak to działa?
Fetch to uniwersalna metoda zgłaszania żądań sieciowych, z której korzystają programiści JavaScript. W dzisiejszym artykule omówimy ideę stojącą za tą funkcją, przedstawimy praktyczne przykłady i zasady jej działania. Dowiesz się, jak efektywnie wykorzystać fetch do tworzenia interaktywnych aplikacji internetowych.
CEO
05 gru 2023
Metoda Fetch w JavaScript to nowoczesne i efektywne rozwiązanie do wykonywania żądań HTTP. Jest ono zbudowane wokół obietnic, co pozwala na asynchroniczne operacje, a tym samym na nieblokujące działanie programu. Zupełnie zastępuje starszą metodę XMLHttpRequest i oferuje szereg zaawansowanych funkcji, takich jak przesyłanie i odbieranie blobów. Dzięki temu możemy odczytywać dane w różnych formatach - od tekstu po dane binarne. Należy jednak pamiętać, że mimo wielu zalet, ma pewne ograniczenia. Jednym z nich jest fakt, że nie jest obsługiwana przez wszystkie przeglądarki. Istotnym jest również zrozumienie tego, że domyślnie Fetch nie wysyła ani nie odbiera plików cookie. Aby to zmienić, należy w konfiguracji żądania dodać odpowiednią opcję.
Powiązane case studies


Marketplace premium kosmetyków na 9 rynkach europejskich - Shopify Plus
Klient: Baza Cosmetics

Platforma edukacyjna generująca materiały do nauki programowania z ChatGPT
Klient: Klient (Aplikacja webowa do nauki programowania)
Branża: Edukacja / EdTech
Podstawy Fetch API: proste zapytanie GET
Fetch API to nowoczesny interfejs umożliwiający realizację zapytań HTTP w języku JavaScript. Najprostszym rodzajem zapytania jest metoda GET. W praktyce użycie Fetch API do wykonania prostej metody GET wygląda następująco: 'fetch('https://adres-api.com')'. Po wykonaniu zapytania, zwróci obietnicę (Promise) z odpowiedzią serwera. W celu przechwycenia i przetwarzania odpowiedzi, stosujemy metody .then i .catch - pierwsza służy do obsługi poprawnej odpowiedzi, druga do obsługi błędów. Choć Fetch API oferuje duże możliwości, sama obsługa zapytań jest intuicyjna i zrozumiała nawet dla osób dopiero rozpoczynających swoją przygodę z JavaScriptem.
Personalizowanie zapytań Fetch: zasada działania metody POST
Fetch API w JavaScript pozwala na wysyłanie zapytań HTTP m.in. przy użyciu metody POST. Personalizowanie zapytań Fetch z użyciem metody POST polega na definiowaniu struktury i treści danych wysyłanych do serwera. Aby to zrobić, tworzymy obiekt konfiguracyjny i definiujemy pole 'method' jako 'POST'. Następnym krokiem jest określenie treści naszej wiadomości wewnątrz pola 'body'. Warto zaznaczyć, że zawartość 'body' musi być stringiem; do jej konwersji często wykorzystuje się metodę JSON.stringify(). Dzięki zastosowaniu metody POST, jesteśmy w stanie przesłać na serwer bardziej kompleksowe dane, które nie ograniczają się tylko do jednego parametru jak w przypadku metody GET.

Obsługa błędów i wyjątków w Fetch
Daje nam możliwość obsługi błędów i wyjątków. Większość błędów sieciowych (np. problemy z połączeniem, niedostępność zasobu) nie powoduje wywołania wyjątku. Wyjątek generowany jest tylko w sytuacji, gdy żądanie nie może zostać zrealizowane na skutek błędu w funkcji Fetch, np. poprzez użycie nieprawidłowej składni. W celu kontroli nad błędami warto zastosować konstrukcję try-catch do przechwytywania wyjątków i błędów w trakcie działania Fetch. Ponadto, przy obsłudze odpowiedzi serwera, dobrą praktyką jest sprawdzenie statusu odpowiedzi metoda response.ok, która zwróci true tylko w przypadku odpowiedzi z serwera o kodach od 200 do 299.
Zastosowanie praktyczne: ładowanie obrazów za pomocą Fetch
Fetch API w JavaScript umożliwia ładne i eleganckie obsługiwanie żądań HTTP. Zastosowanie Fetch do ładowania obrazów jest jednym z wielu praktycznych zastosowań tej metody. Na przykład, możemy skorzystać z Fetch do pobrania obrazu z serwera i wyświetlenia go na stronie internetowej. Aby to zrobić, po prostu używamy metody fetch z odpowiednim URL obrazu jako argumentem, a następnie, gdy obietnica jest spełniona, zwracamy odpowiedź jako bloba. Blob ten można następnie zobrazować jako URL obrazu i dodać do elementu img na stronie. Kluczowe jest zrozumienie, że Fetch API działa z obietnicami, co oznacza, że operacje są wykonywane asynchronicznie, a wyniki dostępne są tylko po ich zakończeniu.
FAQ
FAQ – najczęstsze pytania o Fetch w JavaScript
Fetch to nowoczesne i efektywne rozwiązanie do wykonywania żądań HTTP w JavaScript. Zbudowane wokół obietnic (Promises), pozwala na asynchroniczne operacje – nieblokujące działanie programu. Zastępuje starszą metodę XMLHttpRequest i oferuje zaawansowane funkcje takie jak przesyłanie i odbieranie blobów. Pozwala odczytywać dane w różnych formatach – od tekstu po dane binarne.
Najprostsze użycie: `fetch('https://adres-api.com')`. Po wykonaniu zapytania Fetch zwraca obietnicę (Promise) z odpowiedzią serwera. Do przetwarzania odpowiedzi stosujemy metody `.then()` (obsługa poprawnej odpowiedzi) i `.catch()` (obsługa błędów). Zazwyczaj wywołujemy też `response.json()` lub `response.text()`, by sparsować dane. Obsługa jest intuicyjna nawet dla początkujących programistów.
Tworzymy obiekt konfiguracyjny i definiujemy pole `method` jako `POST`. Następnie określamy treść wewnątrz pola `body`. Zawartość `body` musi być stringiem – do konwersji używa się `JSON.stringify()`. Można też ustawić nagłówki przez `headers`, np. `Content-Type: application/json`. Dzięki metodzie POST przesyłamy bardziej kompleksowe dane, nie ograniczające się do jednego parametru jak w GET.
Większość błędów sieciowych (problemy z połączeniem, niedostępność zasobu) nie powoduje wywołania wyjątku w Fetch. Wyjątek generowany jest tylko gdy żądanie nie może zostać zrealizowane (nieprawidłowa składnia). Warto stosować konstrukcję try-catch do przechwytywania wyjątków. Dobrą praktyką jest sprawdzanie statusu odpowiedzi przez `response.ok` – zwraca `true` tylko dla kodów 200–299. Pozwala to wykrywać błędy HTTP jak 404, 500.
Mimo zalet Fetch ma pewne ograniczenia. Nie jest obsługiwana przez wszystkie przeglądarki (głównie starsze, IE). Domyślnie Fetch nie wysyła ani nie odbiera plików cookie – aby to zmienić, należy dodać opcję `credentials: 'include'` w konfiguracji. Brak natywnego wsparcia dla anulowania zapytań (trzeba użyć AbortController). Błędy sieciowe nie są automatycznie rzucane jako wyjątki.
Fetch pozwala wykonywać dowolne operacje sieciowe. Klasyczne zastosowania: pobieranie danych z API REST, wysyłanie formularzy do serwera, ładowanie obrazów jako blobów (pobranie URL → zwrot jako blob → użycie jako URL obrazu w elemencie img). Operacje są asynchroniczne, wyniki dostępne tylko po ich zakończeniu. Fetch jest fundamentem nowoczesnych aplikacji web do komunikacji frontend-backend.
Blog
Powiązane artykuły
SvelteKit: Narzędzie do Tworzenia Aplikacji Bazujących na Frameworku Svelte
Architektura aplikacji webowych nieustannie ewoluuje, wprowadzając nowe technologie. Jednym z najnowszych graczy na tym polu jest SvelteKit - narzędzie służące do budowania aplikacji internetowych, które bazują na lekkim i wydajnym frameworku Svelte. Czy SvelteKit ma szansę przewyższyć swoje konkurencyjne frameworki i zrewolucjonizować sposób, w jaki tworzymy aplikacje internetowe? Przekonajmy się!
Vanilla JS: Czym jest i jak to działa?
Vanilla JS to nazwa dla czystego, niezmodyfikowanego języka JavaScript - podstawowego narzędzia każdego developera. W kontekście pełnego zrozumienia struktury stron i aplikacji internetowych, kluczowe jest zrozumienie działania Vanilla JS. Rozwiewając mity, obalamy popularne wnioski o jego złożoności oraz wskazujemy na jego praktyczne zastosowania.
AJAX - co to jest AJAX i jak działa?
AJAX, czyli Asynchronous JavaScript and XML. Jest to technologia, która umożliwia przetwarzanie danych na stronie internetowej bez konieczności przeładowania całej strony. AJAX umożliwia szybsze ładowanie stron internetowych, interaktywność interfejsu użytkownika i efektywniejsze przetwarzanie danych.
Pierwsze kroki z GitHub Pages: Praktyczne wprowadzenie
Github Pages to prosty, ale potężny narzędzie, które pozwala na tworzenie i hostowanie stron internetowych bezpośrednio z repozytorium Github. Czy jesteś developerem chcącym pokazać swój projekt, czy blogerem chcącym podzielić się swoją wiedzą - Github Pages jest dla Ciebie. Ten artykuł pomoże Ci w pierwszych krokach z tym serwisem.
htmx – prosta droga do dynamicznych aplikacji bez frameworków
Dynamiczne aplikacje webowe kojarzą się zazwyczaj z rozbudowanymi frameworkami front-endowymi, które wymagają sporej wiedzy i skomplikowanej konfiguracji. Tymczasem istnieje prostsza droga – htmx, biblioteka pozwalająca tworzyć interaktywne interfejsy niemal wyłącznie przy użyciu HTML. Dzięki niej można uniknąć pisania dużej ilości kodu JavaScript i w naturalny sposób połączyć front-end z backendem.
Single-page application - co to jest i czy jest warte uwagi?
Single-page application (SPA) to rodzaj aplikacji internetowej, która wykorzystuje jeden plik, aby zapewnić użytkownikom interaktywność i natychmiastową zmianę treści bez konieczności przeładowywania całej strony. SPA jest coraz popularniejsze ze względu na swoją prostotę, szybkość i użyteczność.






