HttpInterceptor a fost introdus odată cu Angular 4.3.1. Acesta oferă o modalitate de a intercepta cererile și răspunsurile HTTP pentru a le transforma sau a le trata înainte de a le transmite mai departe.
Există două cazuri de utilizare pe care le putem implementa în interceptor.
Primul, putem încerca din nou apelul HTTP o dată sau de mai multe ori înainte de a arunca eroarea. În unele cazuri, de exemplu, dacă primim un timeout, putem continua fără a arunca excepția.
Pentru aceasta, folosim operatorul retry din RxJS pentru a ne resubscrie la observabil.
Exemple mai avansate ale acestui tip de comportament:
Retry an observable sequence on error based on custom criteria
Puterea lui RxJS atunci când folosește backoff exponențial
Puterea lui RxJS atunci când folosește backoff exponențial
Potem apoi să verificăm starea excepției și să vedem dacă este o eroare 401 neautorizată. Cu securitatea bazată pe token-uri, putem încerca să reîmprospătăm token-ul. Dacă acest lucru nu funcționează, putem redirecționa utilizatorul către pagina de autentificare.
Aici încercăm din nou o dată înainte de a verifica starea erorii și de a retrimite eroarea. Reîmprospătarea token-urilor de securitate este în afara scopului acestui articol.
De asemenea, trebuie să furnizăm interceptorul pe care l-am creat.
Notificări
Pentru notificări, folosesc Angular Material Snackbar.