En aquest tema, aprendrem sobre el client HTTP d'Angular, una eina poderosa per fer sol·licituds HTTP a servidors remots. Aquest mòdul és essencial per a qualsevol aplicació Angular que necessiti comunicar-se amb una API backend per obtenir dades, enviar informació o interactuar amb serveis externs.
Objectius del tema
- Comprendre què és el client HTTP d'Angular.
- Aprendre a configurar el client HTTP en una aplicació Angular.
- Conèixer els conceptes bàsics de les sol·licituds HTTP.
Què és el client HTTP d'Angular?
El client HTTP d'Angular és un servei que proporciona mètodes per fer sol·licituds HTTP. Aquest servei es basa en l'API HttpClient
i ofereix una interfície senzilla i intuïtiva per treballar amb sol·licituds HTTP.
Característiques principals:
- Simplificació de sol·licituds HTTP: Proporciona mètodes per a sol·licituds GET, POST, PUT, DELETE, etc.
- Interceptors: Permet la manipulació de sol·licituds i respostes HTTP.
- Tipat fort: Utilitza tipus de dades de TypeScript per millorar la seguretat i la robustesa del codi.
- Observables: Utilitza la llibreria RxJS per gestionar sol·licituds asíncrones.
Configuració del client HTTP
Per utilitzar el client HTTP en una aplicació Angular, primer hem d'importar el mòdul HttpClientModule
en el nostre mòdul principal (normalment AppModule
).
Pas 1: Importar HttpClientModule
// src/app/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 HttpClientModule aquí ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
Pas 2: Injectar HttpClient
en un servei o component
Un cop hem importat HttpClientModule
, podem injectar HttpClient
en qualsevol servei o component per començar a fer sol·licituds HTTP.
// src/app/services/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); } }
Explicació del codi
- Importació de
HttpClient
: ImportemHttpClient
des de@angular/common/http
. - Injectable: Marquem la classe
DataService
com a injectable perquè Angular pugui gestionar la seva instància. - Constructor: Injectem
HttpClient
en el constructor del servei. - Mètode
getData
: Definim un mètodegetData
que fa una sol·licitud GET a l'URL especificada i retorna un observable.
Conceptes bàsics de les sol·licituds HTTP
Tipus de sol·licituds HTTP
Mètode | Descripció |
---|---|
GET | Obtenir dades del servidor. |
POST | Enviar dades al servidor per crear un nou recurs. |
PUT | Actualitzar un recurs existent al servidor. |
DELETE | Eliminar un recurs del servidor. |
Exemple pràctic: Fer una sol·licitud GET
// src/app/components/data-display/data-display.component.ts import { Component, OnInit } from '@angular/core'; import { DataService } from '../../services/data.service'; @Component({ selector: 'app-data-display', template: ` <div *ngIf="data"> <pre>{{ data | json }}</pre> </div> `, styles: [] }) export class DataDisplayComponent implements OnInit { data: any; constructor(private dataService: DataService) { } ngOnInit(): void { this.dataService.getData().subscribe( (response) => this.data = response, (error) => console.error('Error fetching data', error) ); } }
Explicació del codi
- Component
DataDisplayComponent
: Creem un component que mostrarà les dades obtingudes del servei. - Injectar
DataService
: InjectemDataService
en el constructor del component. - Mètode
ngOnInit
: Utilitzem el mètodengOnInit
per fer la sol·licitud GET quan el component s'inicialitza. - Plantilla: Utilitzem una plantilla simple per mostrar les dades en format JSON.
Exercici pràctic
Objectiu
Crear un servei que faci una sol·licitud GET a una API pública i mostrar les dades en un component.
Passos
-
Crear un nou servei:
ng generate service services/public-api
-
Implementar el servei:
// src/app/services/public-api.service.ts import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class PublicApiService { private apiUrl = 'https://jsonplaceholder.typicode.com/posts'; constructor(private http: HttpClient) { } getPosts(): Observable<any> { return this.http.get<any>(this.apiUrl); } }
-
Crear un nou component:
ng generate component components/post-list
-
Implementar el component:
// src/app/components/post-list/post-list.component.ts import { Component, OnInit } from '@angular/core'; import { PublicApiService } from '../../services/public-api.service'; @Component({ selector: 'app-post-list', template: ` <div *ngIf="posts"> <ul> <li *ngFor="let post of posts"> {{ post.title }} </li> </ul> </div> `, styles: [] }) export class PostListComponent implements OnInit { posts: any; constructor(private publicApiService: PublicApiService) { } ngOnInit(): void { this.publicApiService.getPosts().subscribe( (response) => this.posts = response, (error) => console.error('Error fetching posts', error) ); } }
-
Afegir el component a l'aplicació:
<!-- src/app/app.component.html --> <app-post-list></app-post-list>
Solució
Un cop seguiu els passos anteriors, hauríeu de veure una llista de títols de posts obtinguts de l'API pública https://jsonplaceholder.typicode.com/posts
.
Conclusió
En aquest tema, hem après què és el client HTTP d'Angular, com configurar-lo i com fer sol·licituds HTTP bàsiques. També hem vist un exemple pràctic de com utilitzar el client HTTP en un servei i un component. En els següents temes, aprofundirem en com gestionar respostes HTTP, errors i utilitzar observables per a sol·licituds asíncrones.
Curs d'Angular
Mòdul 1: Introducció a Angular
- Què és Angular?
- Configuració de l'entorn de desenvolupament
- Arquitectura d'Angular
- Primera aplicació Angular
Mòdul 2: Components d'Angular
- Comprendre els components
- Crear components
- Plantilles de components
- Estils de components
- Interacció de components
Mòdul 3: Enllaç de dades i directives
- Interpolació i enllaç de propietats
- Enllaç d'esdeveniments
- Enllaç de dades bidireccional
- Directives integrades
- Directives personalitzades
Mòdul 4: Serveis i injecció de dependències
Mòdul 5: Enrutament i navegació
Mòdul 6: Formularis a Angular
Mòdul 7: Client HTTP i observables
- Introducció al client HTTP
- Fer sol·licituds HTTP
- Gestionar respostes HTTP
- Utilitzar observables
- Gestió d'errors
Mòdul 8: Gestió d'estat
- Introducció a la gestió d'estat
- Utilitzar serveis per a la gestió d'estat
- NgRx Store
- NgRx Effects
- NgRx Entity
Mòdul 9: Proves a Angular
- Proves unitàries
- Proves de components
- Proves de serveis
- Proves de cap a cap
- Simulació de dependències
Mòdul 10: Conceptes avançats d'Angular
- Angular Universal
- Optimització del rendiment
- Internacionalització (i18n)
- Tubs personalitzats
- Animacions d'Angular