Späť na blog

Správa HTTP požiadaviek a spracovanie chýb pomocou Angular interceptorov

Správa HTTP požiadaviek a spracovanie chýb pomocou Angular interceptorov

Ak ste vyvíjali aplikáciu pomocou AngularJS, pravdepodobne viete o HTTP interceptoroch. Tieto HTTP interceptory však neboli v Angular dostupné až do verzie 4.3. V tomto návode budeme používať interceptory v Angular na spracovanie HTTP požiadaviek a odpovedí a na spracovanie chýb.

Požiadavky

Angular aplikácie používajú Node.js runtime. Na dokončenie tohto návodu budete musieť mať na svojom počítači nainštalovaný Node.js. Našťastie, inštalácia Node.js je pomerne jednoduchá. Máme kompletného sprievodcu o tom, Ako nainštalovať Node.js na Ubuntu 18.04 tu.

Okrem toho bude pre vás užitočné poznať Angular a byť oboznámený s používaním Angular CLI na zostavenie Angular aplikácií. Budeme používať Node v8.12.0 a npm v6.4.1.

Krok 1: Vytvorenie Angular aplikácie

Na začiatok vytvorme novú Angular aplikáciu pomocou Angular CLI. Našu aplikáciu pomenujeme Angular-Interceptor. Spustením príkazu nižšie vytvorte aplikáciu:

Budete požiadaní o niekoľko volieb. Zadajte predvolené hodnoty a pokračujte:

ang cli Angular Interceptors

Ďalej prejdite do adresára aplikácie a spustením príkazu nižšie spustite aplikáciu:

ng serve Angular Interceptors

Potom si pozrite http://localhost:4200 vo vašom prehliadači, aby ste videli aplikáciu. Teraz ste nakonfigurovali základnú Angular aplikáciu.

Krok 2: Štýlovanie Angular aplikácie

Tu budeme štýlovať našu Angular aplikáciu pomocou Angular Material. Ak chcete nainštalovať Angular Material do svojho projektu, spustite príkaz nižšie:

Týmto sa nainštaluje @angular/material, @angular/cdk, a @angular/animation vo vašom projekte. Ďalej v projekte nastavíme animáciu. Pridajte BrowserAnimationsModule do vášho src/app/module.ts súboru:

Budeme používať komponent Dialog z Angular Material. Ak chcete použiť komponent Dialog, musíme importovať MatDialogModule v src/app/app.module.ts súbore:

Aby bolo používateľské rozhranie atraktívnejšie, pridajme indigo-pink.css do vášho styles.scss súboru:

Krok 3: Vytvorenie vášho Angular Interceptora

V priečinku app vytvoríme nový priečinok s názvom interceptor. Vo vnútri tohto novovytvoreného priečinka vytvorte nový httpconfig.interceptor.ts súbor.

Do nášho httpconfig.interceptor.ts musíme importovať niektoré závislosti, aby náš interceptor fungoval. Tieto závislosti sú HttpInterceptor, HttpRequest, HttpResponse, a HttpHandler, HttpEvent, HttpErrorResponse.

Náš httpconfig.interceptor.ts súbor bude po importe vyzerať nasledovne:

Ďalej vytvorte triedu HttpConfigInterceptor a implementujte rozhranie HttpInterceptor. Toto je príklad:

Pridajte nižšie uvedený kód do httpconfig.interceptor.ts súboru:

Aby to fungovalo, musíme importovať httpconfig.interceptor.ts v našom app.module.ts súbore:

Pridajte HttpConfigInterceptor do providers. Nastavíme multi: true na spracovanie viacerých interceptorov:

V nasledujúcej časti vytvoríme našu službu na spracovanie chýb.

Krok 4: Služba na spracovanie chýb

Tu budeme písať kód na spracovanie chýb. Budeme musieť zachytiť chyby a vhodne ich zobraziť koncovým používateľom. V skratke, nižšie sú uvedené kroky, ktoré budeme sledovať:

  1. Vytvorte priečinok s názvom error-dialog v app priečinku.
  2. Vytvorte službu pre chyby s názvom errorDialogService v súbore s názvom errordialog.service.ts.
  3. Pridajte nižšie uvedený kód do errordialog.service.ts :
Potom vytvorte nový súbor s názvom errordialog.component.ts. Do tohto súboru pridajte nižšie uvedený kód:
Nakoniec musíme vytvoriť HTML súbor, errordialog.component.html, pre šablónu:
Musíme sa vrátiť k súboru httpconfig.interceptor.ts kvôli niekoľkým zmenám. Tieto zmeny nám umožnia zachytávať chyby.

Na zhrnutie si nižšie uveďme jednotlivé kroky:

  1. Začnite importovaním errordialog.service.
  2. Potom pridáme konštruktor pre errorDialogService.
  3. Taktiež pridáme kód na spracovanie chybovej odpovede pomocou catchError a throwError.
  4. Importujte errordialog.service a errordialog.component do AppModule.

Po vykonaní zmien sa upravia dva súbory: app.module.ts a httpconfig.interceptor.ts:

Krok 5: Vytvorenie ukážkových služieb

V tomto kroku vytvoríme dve služby ako ukážku:

  1. Prihlasovacie API
  2. API detailov zákazníka

Vytvorte nový priečinok s názvom services v priečinku src . Následne v tomto novovytvorenom priečinku vytvorte nový súbor s názvom login.service.ts, a pridajte dve funkcie:

Krok 6: Volanie služby HTTP klienta

Nakoniec sme sa dostali k poslednej časti nášho návodu. Našu HTTP službu budeme volať zo súboru app.component.ts . Pridajte dve funkcie LoginService do app.component.ts. Zavolajte prihlasovacie API pomocou onload a customers/details pomocou onclick:

Teraz musíme pridať UI prvok do app.component.html, aby naň mohol používateľ kliknúť:

Na dokončenie budete musieť zahrnúť LoginService do providers v AppModule:

Nižšie nájdete snímku obrazovky dialógového okna pre spracovanie chýb:

error

Záver

V tomto návode sme sa naučili, ako spracovávať HTTP požiadavky a odpovede pomocou interceptorov v Angular. Tiež sme sa naučili, ako spracovávať chyby pomocou dialógového okna v Angular Material.

Aplikácie v Angular používajú Node.js ako svoje runtime prostredie. Ak sa chcete dozvedieť viac o Node.js a o tom, ako nasadiť aplikácie Node.js v Dockeri, pozrite si nášho sprievodcu Ako nasadiť Node.js (Express.js) aplikáciu pomocou Dockeru na Ubuntu 20.04. Môžete si tiež pozrieť Ako vykonávať produkčné úlohy na Ubuntu 20.04 s Node.js a Inštalácia Node.js na CentOS 8: Kompletný sprievodca.

Príjemné programovanie!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.