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 importatHttpClientModuleen el nostreAppModuleper assegurar-nos que el servei HTTP estigui disponible a tota l'aplicació. -
Creació del servei
DataService:- Hem creat un servei anomenat
DataServiceque encapsula la lògica per realitzar una sol·licitud GET a una API. - El mètode
getDataretorna unObservableque emet la resposta de la sol·licitud HTTP.
- Hem creat un servei anomenat
-
Consumir el servei en el component
AppComponent:- Hem injectat el servei
DataServiceen el component. - En el mètode
ngOnInit, hem cridat al mètodegetDatadel 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
DataServiceper realitzar una sol·licitud POST a una API. - Descripció: Afegir un mètode
postDataen el serveiDataServiceque 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
