How to Handle HTTP Requests in Angular: Using HttpClient and Interceptors

  • Post category:angular
  • Reading time:3 mins read

Handling HTTP requests in Angular is crucial for interacting with APIs and fetching data from servers. The HttpClient module provides a powerful way to make HTTP requests in Angular applications, and interceptors allow you to modify these requests and responses globally. Here’s a guide on using HttpClient and interceptors in Angular:

1. Set up HttpClient in your Angular application:

Import HttpClientModule:

In your Angular module (often app.module.ts), import the HttpClientModule:

import { HttpClientModule } from '@angular/common/http';

@NgModule({
// ...
 imports: [
  HttpClientModule,
  // other modules
  ],
  // ...
})
export class AppModule { }

2. Making HTTP requests using HttpClient:

Inject HttpClient:

In your Angular service or component where you need to make HTTP requests, inject HttpClient:

import { HttpClient } from '@angular/common/http';

@Injectable({
providedIn: 'root',
})
export class DataService {
constructor(private http: HttpClient) {}

fetchData() {
  return this.http.get<any>('https://api.example.com/data');
}

postData(data: any) {
  return this.http.post<any>('https://api.example.com/post', data);
}

// Other HTTP methods like put(), delete(), etc., can be used similarly.
}

3. Using Interceptors:

Create an interceptor:

Interceptors allow you to modify HTTP requests or responses before they’re handled by your application. Create an interceptor that implements the HttpInterceptor interface:

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

@Injectable()
export class CustomInterceptor implements HttpInterceptor {
  intercept(
  request: HttpRequest<any>,
  next: HttpHandler
): Observable<HttpEvent<any>> {
  // Modify the request if needed (e.g., add headers, handle tokens)
  const modifiedRequest = request.clone({
  headers: request.headers.set('Authorization', 'Bearer your_token'),
});

    // Pass the modified request to the next handler
    return next.handle(modifiedRequest);
  }
}

Provide the interceptor:

In your module, provide the interceptor by adding it to the HTTP_INTERCEPTORS multi-provider:

import { HTTP_INTERCEPTORS } from '@angular/common/http';

@NgModule({
// ...
providers: [
{
  provide: HTTP_INTERCEPTORS,
  useClass: CustomInterceptor,
  multi: true,
},
// other providers
],
// ...
})
export class AppModule { }

Summary:

  • Set up HttpClientModule to use HttpClient for making HTTP requests.
  • Use the HttpClient methods (get(), post(), etc.) to perform various HTTP operations.
  • Create interceptors to modify requests or responses globally before they’re sent or received by your application.

This approach allows you to efficiently handle HTTP requests in your Angular application using HttpClient and interceptors to manage them globally. Adjust the interceptor logic based on your specific requirements, such as adding authorization headers or handling error responses.

Leave a Reply