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
-
Importació del mòdul
HttpClientModule
: Hem importatHttpClientModule
en el nostreAppModule
per assegurar-nos que el servei HTTP estigui disponible a tota l'aplicació. -
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 unObservable
que emet la resposta de la sol·licitud HTTP.
- Hem creat un servei anomenat
-
Consumir el servei en el component
AppComponent
:- Hem injectat el servei
DataService
en el component. - En el mètode
ngOnInit
, hem cridat al mètodegetData
del servei i ens hem subscrit a l'observable per obtenir la resposta.
- Hem injectat el servei
Exercici pràctic
Exercici 1: Realitzar una sol·licitud POST
- Objectiu: Crear un mètode en el servei
DataService
per realitzar una sol·licitud POST a una API. - Descripció: Afegir un mètode
postData
en el serveiDataService
que enviï dades a una API i mostrar la resposta en el componentAppComponent
.
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
- Què és Angular?
- Configuració de l'entorn de desenvolupament
- La teva primera aplicació Angular
- Arquitectura d'Angular
Mòdul 2: Conceptes bàsics de TypeScript
- Introducció a TypeScript
- Variables i tipus de dades en TypeScript
- Funcions i funcions fletxa
- Classes i interfícies
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
- Introducció al client HTTP
- Realització de sol·licituds HTTP
- Gestió de respostes HTTP
- Ús d'observables