HttpInterceptor byl představen v Angularu 4.3.1. Poskytuje způsob, jak zachytit požadavky a odpovědi HTTP a transformovat je nebo je zpracovat předtím, než je předáme dál.
Existují dva případy použití, které můžeme v interceptoru implementovat.
Poprvé můžeme volání HTTP zopakovat jednou nebo vícekrát, než vyhodíme chybu. V některých případech, například pokud dostaneme timeout, můžeme pokračovat bez vyhození výjimky.
Pro tento účel použijeme operátor retry z RxJS pro opětovné přihlášení k pozorovatelnému.
Další pokročilé příklady takového chování:
Retry observable sekvence při chybě na základě vlastních kritérií
Moc RxJS při použití exponenciálního backoffu
Můžeme pak zkontrolovat stav výjimky a zjistit, zda se jedná o chybu 401 unauthorized. Při zabezpečení pomocí tokenu se můžeme pokusit o obnovení tokenu. Pokud to nefunguje, můžeme uživatele přesměrovat na přihlašovací stránku.
Tady to zkusíme ještě jednou, než zkontrolujeme stav chyby a znovu ji vyhodíme. Obnovení bezpečnostních tokenů je mimo rámec tohoto článku.
Také musíme poskytnout námi vytvořený interceptor.
Notifikace
Pro notifikace používám Angular Material Snackbar.