Front-end

Dlaczego warto używać interceptorów w Axios

Interceptors są klasycznym narzędziem używanym w bibliotece Axios, który pozwala na kontrolę i zmianę żądań HTTP. W niniejszym artykule przedstawimy korzyści płynące z ich wykorzystania oraz przykłady sytuacji, w których możesz je użyć.

06 cze 2023

Interceptory to bardzo przydatne narzędzie w bibliotece Axios. Działają one jako pośrednicy w wysyłaniu żądań i otrzymywaniu odpowiedzi. Dzięki nim możemy modyfikować żądania i odpowiedzi w locie, dodawać nagłówki czy obsługiwać błędy. Interceptory działają w łańcuchu, w kolejności, w jakiej zostaną dodane do konfiguracji Axios. Oznacza to, że możemy mieć wiele interceptorów, każdy wykonujący specyficzne zadanie. Dzięki nim kod staje się bardziej modularny i łatwiej go utrzymać.

 

Dlaczego warto używać interceptorów?

Interceptory to bardzo przydatne narzędzie do wykonywania operacji na żądaniach i odpowiedziach w bibliotece Axios. Pozwalają na modyfikowanie żądań lub odpowiedzi przed ich wysłaniem lub przetworzeniem. Dzięki temu dodatkowi możemy też łatwiej zarządzać naszym kodem, oddzielając obsługę poszczególnych funkcjonalności od logiki biznesowej aplikacji.

BoringOwl_programming_developer_using_computer_b0fce03b-f51f-4fcf-bde2-d874f247f267 (1).png

Przykłady użycia interceptorów

Dodanie interceptorów do instancji Axios daje wiele możliwości zwiększenia elastyczności i kontroli nad aplikacją. Przykładowo możemy wykorzystać je do autoryzacji zapytań wysyłanych przez aplikację poprzez dodanie odpowiedniego nagłówka w funkcji interceptora.

 

axios.interceptors.request.use((config) => {
	const token = localStorage.getItem("token");
	if (token) {
		config.headers["Authorization"] = `Token ${token}`;
	}
	return config;
})

 

 Interceptory pozwalają także na łatwe obsłużenie błędów w jednym miejscu aplikacji, zamiast powtarzania kodu obsługi błędów w każdym zapytaniu - na przykład wykonując przekierowanie do podstrony logowania po otrzymaniu statusu odpowiedzi HTTP 401 Unauthorized.

 

axios.interceptors.response.use(
	() => {},
	(error) => {
		if (error.response.status === 401) {
			window.location.replace("/login");
		}
	}
)

 

Podsumowanie

Podsumowując, stosowanie interceptorów w Axios zapewnia wiele korzyści dla programistów. Pozwalają one na łatwe dodawanie wspólnych funkcjonalności do zapytań HTTP bez potrzeby duplikacji kodu. Dzięki temu proces pisania i utrzymywania kodu jest prostszy oraz bardziej efektywny. Przechwytywacze pozwalają również na monitorowanie i modyfikowanie zapytań oraz odpowiedzi, co czyni je bardzo przydatnym narzędziem w procesie debugowania aplikacji.

FAQ

FAQ – Axios interceptors

  • Interceptory axios to funkcje uruchamiane przed wysłaniem żądania lub po otrzymaniu odpowiedzi — wzorzec podobny do middleware. Zastosowania: uwierzytelnianie (automatyczne doklejanie tokenów do każdego żądania), scentralizowana obsługa błędów, logowanie, transformacja danych, logika ponawiania i globalne wskaźniki ładowania. Axios pozostaje najpopularniejszym klientem HTTP w JavaScripcie, obok wbudowanego fetch i nowszych nakładek typu ky. Interceptory to jego najmocniejsza karta — pozwalają trzymać sprawy przekrojowe w jednym miejscu zamiast kopiować je przy każdym wywołaniu.

  • Dwa punkty zaczepienia:

    • interceptor żądania — działa przed wysłaniem: modyfikuje konfigurację, nagłówki, parametry i ciało,
    • interceptor odpowiedzi — działa po otrzymaniu odpowiedzi, zanim trafi ona do kodu wywołującego: przetwarza dane, obsługuje błędy.

    Kanoniczny przykład: axios.interceptors.request.use(config => { config.headers.Authorization = `Bearer ${token}`; return config; }) dokleja token do każdego żądania. Obsługę błędów realizuje interceptor odpowiedzi — jedno miejsce na reakcję na 401, komunikaty i logowanie zamiast rozsianych try/catchy. Zasada: interceptory do spraw przekrojowych, nie do logiki biznesowej.

  • Typowe scenariusze:

    • uwierzytelnianie — automatyczne doklejanie tokenów JWT i OAuth,
    • odświeżanie tokenów — wykrycie wygaśnięcia, odświeżenie i ponowienie pierwotnego żądania,
    • obsługa błędów — scentralizowane toasty, logowanie, przekierowania przy 401,
    • wskaźniki ładowania — globalny stan na podstawie liczby trwających żądań,
    • ponawianie — automatyczne retry przy błędach sieciowych,
    • transformacja danych — konwencje camelCase/snake_case, parsowanie dat i kwot,
    • logowanie żądań pod debugowanie i zgodność.

    Przy integracjach z rodzimymi API — bramkami płatności, KSeF, systemami bankowymi — interceptory obsługują uwierzytelnianie i ponowienia w jednym miejscu.

  • Kanon:

    • token: axios.interceptors.request.use(config => { const token = localStorage.getItem("token"); if (token) config.headers.Authorization = `Bearer ${token}`; return config; }),
    • obsługa 401: axios.interceptors.response.use(r => r, error => { if (error.response?.status === 401) logout(); return Promise.reject(error); }),
    • odświeżanie tokenu — wzorzec złożony: wykryj 401, odśwież, ponów żądanie; gotowe rozwiązanie to biblioteka axios-auth-refresh,
    • ponawianie — axios-retry zamiast własnej implementacji.

    Warto też znać nowoczesną alternatywę: TanStack Query opakowuje axios/fetch i dostarcza retry, cache i obsługę błędów z pudełka — interceptory zostają wtedy dla warstwy autoryzacji.

  • W aplikacjach z wieloma wywołaniami API — zdecydowanie. Zyski: sprawy przekrojowe (tokeny, błędy, logowanie) w jednym miejscu, mniej duplikacji i łatwiejsze utrzymanie. Koszty: zachowanie „ukryte" w interceptorach bywa zaskoczeniem przy debugowaniu, a wzorce typu odświeżania tokenów mają swoje pułapki — stąd przewaga sprawdzonych bibliotek nad własnymi implementacjami. Zdrowa architektura warstwy HTTP w nowoczesnej aplikacji: axios z interceptorami do autoryzacji i błędów, TanStack Query do stanu serwera (cache, retry, invalidacja) — ten duet pokrywa niemal wszystkie potrzeby i jest dziś standardem profesjonalnego frontendu.

Blog

Powiązane artykuły

Czytaj więcej
Front-end

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.

Tomasz Kozon
20 sty 2023
Front-end

Client-side Hydration: jak działa i dlaczego jest kluczowa dla nowoczesnych aplikacji webowych

Nowoczesne aplikacje webowe muszą być jednocześnie szybkie, interaktywne i przyjazne dla użytkownika już od pierwszego załadowania strony. Właśnie w tym kontekście coraz większe znaczenie zyskuje client-side hydration, czyli mechanizm łączący renderowanie po stronie serwera z logiką uruchamianą w przeglądarce. Dzięki niemu możliwe jest wyświetlenie treści niemal natychmiast, a następnie płynne przejście do pełnej interaktywności aplikacji.

Tomasz Kozon
13 gru 2025
Front-end

Turbopack w praktyce: jak działa nowy bundler od Vercela

Rosnąca złożoność aplikacji webowych sprawia, że wydajność narzędzi developerskich ma dziś ogromne znaczenie. Turbopack, nowy bundler od Vercela, powstał jako odpowiedź na ograniczenia klasycznych rozwiązań, takich jak Webpack, szczególnie w dużych projektach Next.js. Jego głównym celem jest maksymalne skrócenie czasu startu aplikacji i natychmiastowy hot reload podczas pracy z kodem.

Tomasz Kozon
06 gru 2025
Front-end

Radix UI – biblioteka headless komponentów dla React

Radix UI to coraz popularniejsza biblioteka headless komponentów, która zdobywa uznanie wśród developerów React poszukujących elastycznych i solidnych rozwiązań. W świecie, gdzie dostępność i jakość UX mają kluczowe znaczenie, gotowe prymitywy Radix UI pozwalają budować interfejsy zgodne z najlepszymi praktykami. Biblioteka nie narzuca warstwy wizualnej, dzięki czemu świetnie sprawdza się w projektach opartych na własnym design systemie.

Tomasz Kozon
03 gru 2025
Front-end

React Storefront: Jak zbudować ultraszybki sklep internetowy?

Budowa ultraszybkiego sklepu internetowego to dziś nie tylko kwestia wygody użytkownika, ale kluczowy element przewagi konkurencyjnej w e-commerce. Każda dodatkowa sekunda ładowania potrafi obniżyć konwersję, dlatego nowoczesne technologie muszą stawiać wydajność na pierwszym miejscu. React Storefront powstał właśnie po to, by łączyć elastyczność Reacta z ekstremalną szybkością działania i sprawdzonymi wzorcami dla sklepów online.

Tomasz Kozon
29 lis 2025
Front-end

Parsley.js – lekka biblioteka do walidacji formularzy

Formularze są jednym z kluczowych elementów każdej strony internetowej i aplikacji webowej, a ich poprawne działanie ma bezpośredni wpływ na doświadczenie użytkownika. Walidacja danych pozwala uniknąć błędów, niekompletnych zgłoszeń oraz niepotrzebnej komunikacji z serwerem. Parsley.js to lekka i prosta w użyciu biblioteka JavaScript, która umożliwia skuteczną walidację formularzy po stronie klienta.

Tomasz Kozon
28 lis 2025