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
Dev Tools

Oxc: nowa generacja narzędzi dla JavaScript i TypeScript

Oxc to zestaw narzędzi dla JavaScript i TypeScript napisany w Rust, który sprawdza, formatuje i przetwarza kod wielokrotnie szybciej niż ESLint, Prettier czy Babel. Wyjaśniamy, z czego się składa, ile czasu realnie oszczędza i kiedy zmiana narzędzi w projekcie ma sens.

Tomasz Kozon
20 lip 2026