Torna al blog

Gestione delle richieste HTTP e gestione degli errori con gli interceptor di Angular

Gestione delle richieste HTTP e gestione degli errori con gli interceptor di Angular

Se hai sviluppato un'applicazione utilizzando AngularJS, probabilmente sarai a conoscenza degli intercettori HTTP. Tuttavia, questi intercettori HTTP non erano disponibili in Angular fino alla versione 4.3. In questo tutorial, utilizzeremo gli intercettori in Angular per gestire le richieste e le risposte HTTP e per elaborare gli errori.

Prerequisiti

Angular le applicazioni utilizzano il runtime Node.js. Per completare questo tutorial, dovrai avere Node.js installato sulla tua macchina. Fortunatamente, Node.js è abbastanza facile da installare. Abbiamo una guida completa su Come installare Node.js su Ubuntu 18.04 qui.

Inoltre, sarà utile per te conoscere Angular ed essere familiare con l'uso di Angular CLI per creare applicazioni Angular. Utilizzeremo Node v8.12.0 e npm v6.4.1.

Passo 1: Creare l'app Angular

Per iniziare, creiamo una nuova app Angular utilizzando Angular CLI. Chiameremo la nostra applicazione Angular-Interceptor. Esegui il comando seguente per creare l'app:

Ti verranno chieste alcune opzioni. Inserisci i valori predefiniti e procedi:

ang cli Angular Interceptors

Successivamente, naviga nella directory dell'applicazione ed esegui il comando seguente per avviare l'applicazione:

ng serve Angular Interceptors

Quindi, visualizza http://localhost:4200 nel tuo browser per vedere l'app. Ora hai configurato un'app Angular di base.

Passo 2: Definire lo stile dell'app Angular

Qui definiremo lo stile della nostra app Angular utilizzando Angular Material. Per installare Angular Material nel tuo progetto, esegui il comando seguente:

Questo installerà @angular/material, @angular/cdk, e @angular/animation nel tuo progetto. Successivamente, configureremo un'animazione nel progetto. Aggiungi BrowserAnimationsModule nel tuo file src/app/module.ts :

Utilizzeremo il componente Dialog di Angular Material. Per utilizzare il componente Dialog, dobbiamo importare MatDialogModule nel file src/app/app.module.ts :

Per rendere l'interfaccia utente più attraente, aggiungiamo indigo-pink.css al tuo file styles.scss :

Passo 3: Creare il tuo intercettore Angular

Sotto la cartella app, creeremo una nuova cartella chiamata interceptor. All'interno di questa cartella appena creata, crea un nuovo file httpconfig.interceptor.ts .

Dobbiamo importare alcune dipendenze nel nostro file httpconfig.interceptor.ts per far funzionare il nostro intercettore. Queste dipendenze sono HttpInterceptor, HttpRequest, HttpResponse, e HttpHandler, HttpEvent, HttpErrorResponse.

Il nostro file httpconfig.interceptor.ts sarà simile al seguente dopo l'importazione:

Successivamente, crea una classe HttpConfigInterceptor e implementa l'interfaccia HttpInterceptor. Questo è un esempio:

Aggiungi il codice sottostante al file httpconfig.interceptor.ts :

Per farlo funzionare, dobbiamo importare httpconfig.interceptor.ts nel nostro file app.module.ts :

Aggiungi HttpConfigInterceptor a providers. Imposteremo multi: true per gestire più interceptor:

Nella prossima sezione, creeremo il nostro servizio per gestire gli errori.

Passo 4: Servizio per la gestione degli errori

Qui scriveremo il codice per gestire gli errori. Dovremo catturare gli errori e mostrarli in modo appropriato agli utenti finali. In sintesi, di seguito sono riportati i passaggi che seguiremo:

  1. Crea una cartella chiamata error-dialog nella cartella app .
  2. Crea un servizio per gli errori chiamato errorDialogService in un file chiamato errordialog.service.ts.
  3. Aggiungi il codice sottostante nel file errordialog.service.ts :
Dopodiché, crea un nuovo file chiamato errordialog.component.ts. All'interno di questo file aggiungi il codice seguente:
Infine, dobbiamo creare un file HTML, errordialog.component.html, per il template:
Dobbiamo rivedere il file httpconfig.interceptor.ts per apportare alcune modifiche. Queste modifiche ci consentiranno di intercettare gli errori.

In sintesi, elenchiamo i passaggi seguenti:

  1. Inizia importando errordialog.service.
  2. Quindi, aggiungeremo il costruttore per errorDialogService.
  3. We will also add the code to handle the error response using catchError and throwError.
  4. Importa errordialog.service e errordialog.component in AppModule.

Dopo aver apportato le modifiche, verranno modificati due file: app.module.ts e httpconfig.interceptor.ts:

Passo 5: Creazione di servizi di esempio

In questo passaggio creeremo due servizi come esempio:

  1. API di login
  2. API dei dettagli del cliente

Crea una nuova cartella chiamata services nella cartella src. Successivamente, all'interno di questa cartella appena creata, crea un nuovo file chiamato login.service.ts, e aggiungi due funzioni:

Passo 6: Chiamata del servizio HTTP Client

Infine, siamo all'ultima parte del nostro tutorial. Chiameremo il nostro servizio HTTP dal file app.component.ts . Aggiungi le due funzioni LoginService a app.component.ts. Chiama l'API di login all'onload e customers/details con onclick:

Ora dobbiamo aggiungere un elemento UI in app.component.html, in modo che l'utente possa cliccarlo:

Per finire, dovrai includere il LoginService nei providers in AppModule:

Di seguito, trovi uno screenshot della finestra di dialogo del gestore degli errori:

error

Conclusione

In questo tutorial, abbiamo imparato come gestire le richieste e le risposte HTTP utilizzando gli interceptor di Angular. Abbiamo anche imparato come gestire gli errori utilizzando la finestra di dialogo in Angular Material.

Le app Angular utilizzano Node.js come runtime. Se vuoi saperne di più su Node.js e su come distribuire le applicazioni Node.js su Docker, dai un'occhiata alla nostra guida Come distribuire un'app Node.js (Express.js) con Docker su Ubuntu 20.04. Puoi anche consultare Come eseguire attività di produzione su Ubuntu 20.04 con Node.js e Installazione di Node.js su CentOS 8: una guida completa.

Buona programmazione!

author

Pranay Kapgate

Autore · CloudSigma

Preslav Dobrev è un designer creativo presso CloudSigma, con un focus su un'identità aziendale coerente attraverso l'uso di canali di marketing tradizionali e innovativi. È abile nel fondere la visione artistica con il marketing strategico per creare narrazioni di brand di grande impatto.

Commenti

Ancora nessun commento. Scrivi il primo.