En aquest tema, aprendrem sobre el client HTTP d'Angular, una eina poderosa per interactuar amb serveis web i API's. El client HTTP ens permet realitzar sol·licituds HTTP (GET, POST, PUT, DELETE, etc.) de manera senzilla i eficient.

Objectius

  • Entendre què és el client HTTP d'Angular.
  • Aprendre a configurar el client HTTP en una aplicació Angular.
  • Realitzar sol·licituds HTTP bàsiques.

Què és el client HTTP d'Angular?

El client HTTP d'Angular és un servei que forma part del mòdul @angular/common/http. Aquest servei proporciona una API simplificada per realitzar sol·licituds HTTP i gestionar les respostes. És una millora significativa respecte al servei Http de les versions anteriors d'Angular, oferint una interfície més neta i funcionalitats avançades com la manipulació d'observables.

Configuració del client HTTP

Pas 1: Instal·lació del mòdul HTTPClient

Per utilitzar el client HTTP, primer hem d'importar el mòdul HttpClientModule en el nostre mòdul principal (normalment AppModule).

// app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';

import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    HttpClientModule // Afegim el mòdul HttpClientModule aquí
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Pas 2: Creació d'un servei HTTP

És una bona pràctica encapsular la lògica de les sol·licituds HTTP dins d'un servei. Això facilita la reutilització del codi i la seva prova.

// data.service.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class DataService {

  private apiUrl = 'https://api.example.com/data';

  constructor(private http: HttpClient) { }

  getData(): Observable<any> {
    return this.http.get<any>(this.apiUrl);
  }
}

Pas 3: Consumir el servei en un component

Ara que tenim el nostre servei configurat, podem utilitzar-lo en un component per realitzar una sol·licitud HTTP.

// app.component.ts
import { Component, OnInit } from '@angular/core';
import { DataService } from './data.service';

@Component({
  selector: 'app-root',
  template: `
    <div *ngIf="data">
      <pre>{{ data | json }}</pre>
    </div>
  `
})
export class AppComponent implements OnInit {
  data: any;

  constructor(private dataService: DataService) { }

  ngOnInit() {
    this.dataService.getData().subscribe(response => {
      this.data = response;
    });
  }
}

Explicació del codi

  1. Importació del mòdul HttpClientModule: Hem importat HttpClientModule en el nostre AppModule per assegurar-nos que el servei HTTP estigui disponible a tota l'aplicació.

  2. Creació del servei DataService:

    • Hem creat un servei anomenat DataService que encapsula la lògica per realitzar una sol·licitud GET a una API.
    • El mètode getData retorna un Observable que emet la resposta de la sol·licitud HTTP.
  3. Consumir el servei en el component AppComponent:

    • Hem injectat el servei DataService en el component.
    • En el mètode ngOnInit, hem cridat al mètode getData del servei i ens hem subscrit a l'observable per obtenir la resposta.

Exercici pràctic

Exercici 1: Realitzar una sol·licitud POST

  1. Objectiu: Crear un mètode en el servei DataService per realitzar una sol·licitud POST a una API.
  2. Descripció: Afegir un mètode postData en el servei DataService que enviï dades a una API i mostrar la resposta en el component AppComponent.

Solució

// data.service.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class DataService {

  private apiUrl = 'https://api.example.com/data';

  constructor(private http: HttpClient) { }

  getData(): Observable<any> {
    return this.http.get<any>(this.apiUrl);
  }

  postData(data: any): Observable<any> {
    return this.http.post<any>(this.apiUrl, data);
  }
}
// app.component.ts
import { Component, OnInit } from '@angular/core';
import { DataService } from './data.service';

@Component({
  selector: 'app-root',
  template: `
    <div *ngIf="data">
      <pre>{{ data | json }}</pre>
    </div>
    <button (click)="sendData()">Send Data</button>
  `
})
export class AppComponent implements OnInit {
  data: any;

  constructor(private dataService: DataService) { }

  ngOnInit() {
    this.dataService.getData().subscribe(response => {
      this.data = response;
    });
  }

  sendData() {
    const sampleData = { name: 'John', age: 30 };
    this.dataService.postData(sampleData).subscribe(response => {
      console.log('Data sent successfully:', response);
    });
  }
}

Resum

En aquest tema, hem après què és el client HTTP d'Angular i com configurar-lo en una aplicació. Hem creat un servei per encapsular la lògica de les sol·licituds HTTP i hem consumit aquest servei en un component. També hem realitzat un exercici pràctic per enviar dades a una API mitjançant una sol·licitud POST.

En el següent tema, explorarem com realitzar sol·licituds HTTP més avançades i com gestionar les respostes de manera eficient.

Curs d'Angular 2+

Mòdul 1: Introducció a Angular

Mòdul 2: Conceptes bàsics de TypeScript

Mòdul 3: Components i plantilles

Mòdul 4: Directives i pipes

Mòdul 5: Serveis i injecció de dependències

Mòdul 6: Enrutament i navegació

Mòdul 7: Formularis en Angular

Mòdul 8: Client HTTP i observables

Mòdul 9: Gestió d'estat

Mòdul 10: Proves en Angular

Mòdul 11: Temes avançats

Mòdul 12: Desplegament i millors pràctiques

© Copyright 2024. Tots els drets reservats