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

Crystallize jako headless commerce - kiedy warto go wybrać?

Crystallize to norweska platforma headless commerce, która łączy zarządzanie danymi produktowymi, treści i sprzedaż w jednym systemie. Pokazujemy cztery sygnały, że pasuje do Twojej firmy, trzy sytuacje, w których lepiej wybrać coś innego, i jak policzyć jej koszt, zanim przyjdzie pierwszy rachunek za użycie.

Tomasz Kozon
10 paź 2026
Front-end

Centra - headless e-commerce dla marek premium i globalnych

Centra to szwedzka platforma headless e-commerce dla marek modowych i lifestyle'owych, które sprzedają na wielu rynkach i jednocześnie prowadzą hurt. Na przykładzie marki, która przerosła swój sklep, pokazujemy, co Centra załatwia, czego nie zrobi za firmę i kiedy lepiej wybrać Shopify Plus lub platformę open source.

Tomasz Kozon
09 paź 2026
Front-end

Lynx - nowa alternatywa dla React Native?

Lynx to otwartoźródłowy framework od ByteDance, na którym działają fragmenty TikToka. Wyjaśniamy, czym różni się od React Native, dlaczego jest silnikiem do osadzania, a nie gotowym zestawem do budowy aplikacji, i w jakich trzech sytuacjach ma sens, a w jakich nie.

Tomasz Kozon
24 wrz 2026