13-2 Créer un service ProjetService
On créera un service responsable de faire les appels d'API et retourner les données associées aux projets.
Le guide de style Angular
indique de nommer les services avec le nom de l'entité à gérer au singulier. Dans notre cas: ProjetService
.
Créer un service
Pour créer un service, on peut utiliser le CLI d'Angular via la commande suivante:
ng generate service core/services/projet-service
ng generate
génère un certain type de fichierservice
génère une classe de typeService
core/services/projet-service
génère une classeProjetService
dans le dossiercore/services
Il est une bonne pratique de regrouper les classes d'un même type sous le même dossier, services
en l'occurrence.
Cela devrait vous avoir généré le fichier suivant dans le dossier core/services
.
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class ProjetService {
}
Le décorateur @Injectable
rend la classe injectable dans d'autres classes via le système d'injection de dépendances d'Angular.
Créer la méthode obtenirTous()
Dans la classe du service, ajoutez une méthode asynchrone obtenirTous()
qui sera responsable d'obtenir tous les projets et de retourner une Promise
(méthode asynchrone) de liste de projets (Promise<Projet[]>
).
export class ProjetService {
async obtenirTous(): Promise<Projet[]> {
}
}
Reprendre le contenu de la méthode obtenirProjets()
de ProjetsIndex
Notre objectif est de remplacer la fonction obtenirProjets()
par un simple appel à la fonction obtenirTous()
du service.
Ainsi, copiez le contenu de obtenirProjets()
dans obtenirTous()
.
export class ProjetService {
async obtenirTous(): Promise<Projet[]> {
const url = "/projets";
let reponse = await api.get<Projet[]>(url);
return reponse.data;
}
}