Terug naar blog

HTTP-verzoeken en foutafhandeling beheren met Angular Interceptors

HTTP-verzoeken en foutafhandeling beheren met Angular Interceptors

Als u een applicatie heeft ontwikkeld met AngularJS, bent u waarschijnlijk op de hoogte van HTTP-interceptors. Deze HTTP-interceptors waren echter pas vanaf versie 4.3 beschikbaar in Angular. In deze handleiding gaan we interceptors in Angular gebruiken om HTTP-verzoeken en -antwoorden af te handelen en fouten te verwerken.

Vereisten

Angular-applicaties maken gebruik van Node.js runtime. Om deze handleiding te voltooien, moet Node.js op uw machine zijn geïnstalleerd. Gelukkig is Node.js vrij eenvoudig te installeren. We hebben hier een complete gids over Hoe u Node.js installeert op Ubuntu 18.04.

Daarnaast is het handig als u Angular kent en vertrouwd bent met het gebruik van Angular CLI om Angular-applicaties te bouwen. We gebruiken Node v8.12.0 en npm v6.4.1.

Stap 1: Angular-app maken

Laten we om te beginnen een nieuwe Angular-app maken met behulp van Angular CLI. We noemen onze applicatie Angular-Interceptor. Voer het onderstaande commando uit om de app te maken:

Er zal u om een aantal keuzes worden gevraagd. Voer de standaardwaarden in en ga verder:

ang cli Angular Interceptors

Navigeer vervolgens naar de applicatiemap en voer het onderstaande commando uit om de applicatie te starten:

ng serve Angular Interceptors

Bekijk vervolgens http://localhost:4200 in uw browser om de app te bekijken. U heeft nu een basis Angular-app geconfigureerd.

Stap 2: Angular-app stylen

Hier gaan we onze Angular-app stylen met behulp van Angular Material. Voer het onderstaande commando uit om Angular Material in uw project te installeren:

Dit installeert @angular/material, @angular/cdk, en @angular/animation in uw project. Vervolgens stellen we een animatie in het project in. Voeg BrowserAnimationsModule toe aan uw src/app/module.ts -bestand:

We gaan de Dialog-component van Angular Material gebruiken. Om de Dialog-component te gebruiken, moeten we MatDialogModule importeren in het src/app/app.module.ts -bestand:

Om de UI aantrekkelijker te maken, voegen we indigo-pink.css toe aan uw styles.scss -bestand:

Stap 3: Bouw uw Angular Interceptor

Onder de map app maken we een nieuwe map genaamd interceptor. Maak in deze nieuw gemaakte map een nieuw httpconfig.interceptor.ts -bestand aan.

We moeten enkele afhankelijkheden importeren in ons httpconfig.interceptor.ts-bestand om onze interceptor te laten werken. Deze afhankelijkheden zijn HttpInterceptor, HttpRequest, HttpResponse, en HttpHandler, HttpEvent, HttpErrorResponse.

Ons httpconfig.interceptor.ts-bestand zal er na het importeren als volgt uitzien:

Maak vervolgens een klasse HttpConfigInterceptor en implementeer de interface HttpInterceptor. Dit is een voorbeeld:

Voeg de onderstaande code toe aan het httpconfig.interceptor.ts bestand:

Om het te laten werken, moeten we httpconfig.interceptor.ts importeren in ons app.module.ts bestand:

Voeg HttpConfigInterceptor toe aan providers. We stellen multi: true in om meerdere interceptors af te handelen:

In de volgende sectie zullen we onze service maken om fouten af te handelen.

Step 4: Service for Handling Errors

Hier gaan we code schrijven om fouten af te handelen. We moeten de fouten opvangen en deze op de juiste manier aan de eindgebruikers tonen. In een notendop zijn dit de stappen die we gaan volgen:

  1. Maak een map genaamd error-dialog in de app map.
  2. Maak een service voor fouten genaamd errorDialogService in een bestand genaamd errordialog.service.ts.
  3. Voeg de onderstaande code toe aan het errordialog.service.ts :
Maak daarna een nieuw bestand genaamd errordialog.component.ts. Voeg in dit bestand de onderstaande code toe:
Ten slotte moeten we een HTML-bestand maken, errordialog.component.html, voor de template:
We moeten het bestand httpconfig.interceptor.ts opnieuw bekijken voor een aantal wijzigingen. Deze wijzigingen stellen ons in staat om fouten te onderscheppen.

Kort samengevat zijn dit de stappen:

  1. Begin met het importeren van errordialog.service.
  2. Vervolgens voegen we de constructor toe voor errorDialogService.
  3. We voegen ook de code toe om de foutrespons af te handelen met behulp van catchError en throwError.
  4. Importeer errordialog.service en errordialog.component in de AppModule.

Nadat we de wijzigingen hebben aangebracht, zullen er twee bestanden zijn gewijzigd: app.module.ts en httpconfig.interceptor.ts:

Stap 5: Voorbeelddiensten maken

In deze stap maken we twee services als voorbeeld:

  1. Login-API
  2. Klantendetail-API

Maak een nieuwe map genaamd services in de src map. Maak vervolgens in deze nieuw gemaakte map een nieuw bestand genaamd login.service.ts, en voeg twee functies toe:

Stap 6: De HTTP Client Service aanroepen

Tot slot zijn we bij het laatste deel van onze handleiding. We zullen onze HTTP-service aanroepen vanuit het app.component.ts bestand. Voeg de twee LoginService functies toe aan app.component.ts. Roep de login-API aan bij onload en de customers/details met onclick:

Nu moeten we een UI-element toevoegen in app.component.html, zodat de gebruiker erop kan klikken:

Om te voltooien, moet u de LoginService toevoegen aan providers in AppModule:

Hieronder vindt u een screenshot van het dialoogvenster voor foutafhandeling:

error

Conclusie

In deze handleiding hebben we geleerd hoe we HTTP-verzoeken en -antwoorden kunnen afhandelen met behulp van Angular-interceptors. We hebben ook geleerd hoe we fouten kunnen afhandelen met behulp van een dialoogvenster in Angular Material.

Angular-apps gebruiken Node.js als hun runtime. Als u meer wilt weten over Node.js en hoe u Node.js-applicaties op Docker implementeert, bekijk dan onze How to Deploy a Node.js (Express.js) App with Docker on Ubuntu 20.04-handleiding. U kunt ook How To Perform Production Tasks On Ubuntu 20.04 With Node.js en Installing Node.js on CentOS 8: a Complete Guide.

Veel computerplezier!

author

Pranay Kapgate

Auteur · CloudSigma

Preslav Dobrev is een creatief ontwerper bij CloudSigma, met de nadruk op een consistente bedrijfsidentiteit door middel van traditionele en innovatieve marketingkanalen. Hij is bedreven in het samenvoegen van artistieke visie met strategische marketing om impactvolle merkverhalen te creëren.

Reacties

Nog geen reacties. Wees de eerste.