No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Uso de interceptores

18/23
Recursos

Los Interceptores de Angular llegan para facilitar la manipulaci贸n de las peticiones que tu aplicaci贸n realiza.

Mi Primer Interceptor

Un interceptor, como su nombre indica, interceptar谩 las solicitudes HTTP antes de que se env铆en al servidor, para agregar informaci贸n a las request, manipular datos, entre otras utilidades.

1. Crea el interceptor

Con el CLI de Angular, puedes crear un interceptor con el comando ng generate interceptor <interceptro_name>. En este ejemplo, generaremos un interceptor para manipular los errores HTTP en toda tu aplicaci贸n.

// interceptors/errors.interceptor.ts
import { Injectable } from '@angular/core';
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable()
export class ErrorsInterceptor implements HttpInterceptor {

  constructor() {}

  intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
    return next.handle(request)
      );
  }
}

2. Inyecci贸n del interceptor

Lo interceptores son muy similares a los Servicios, pero se inyectan en el m贸dulo de tu app de una forma diferente.

// app.module.ts
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { ErrorsInterceptor } from './interceptors/errors.interceptor';

@NgModule({
  // ...
  providers: [
    {
      provide: HTTP_INTERCEPTORS,
      useClass: ErrorsInterceptor
    }
  ]
})
export class AppModule { }

Importando primeramente HTTP_INTERCEPTORS desde @angular/common/http, puedes importar tu propio interceptor. Ahora, todas las solicitudes que salgan de tu aplicaci贸n, se interceptar谩n por el mismo.

Manejo de errores con un interceptor

Un buen uso para los interceptores es el manejo de errores. Como casi todo en Angular utiliza Observables, los interceptores no son la excepci贸n y puedes apoyarte de RxJS para manipular la emisi贸n de los datos del observable.

// interceptors/errors.interceptor.ts
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
  return next.handle(request)
    .pipe(
      catchError((error: HttpErrorResponse) => {

        if (error.status === 401)
          return throwError('No posee permisos suficientes.');
        else if (error.status === 403)
          return throwError('Acceso prohibido.');
        else if (error.status === 404)
          return throwError('Registro no encontrado.');
        else
          return throwError('Ha ocurrido un error inesperado.');

      }),
    );
}

Implementa esta l贸gica para identificar el tipo de respuesta del backend y realizar una u otra acci贸n dependiendo el error.


Contribuci贸n creada por: Kevin Fiorentino.

Aportes 5

Preguntas 5

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Interceptors

Los interceptors en Angular nos brindan un mecanismo para interceptar y/o mutar las solicitudes y respuestas http.

modifique mi pipe con el tap y va de lujo

 .pipe(
      tap(token => {
         this.token_access = token.access_token;
      }),
      switchMap ((token) =>{
        return  this.authService.profile(token.access_token);
      })

Crear interceptor -->
ng g interceptor interceptors/time --flat

Para qu茅 sirve multi: true?

Los interceptores y los middleware es lo mismo ?