TP 10 : Client HTTP
Objectifs
- Configurer une fausse API en utilisant
json-server - Utiliser le
HttpClientModuleet créer/utiliser des services associés pour récupérer des données depuis une API
Tâches
Tâche 1 : Configuration du backend
Puisque nous allons travailler avec REST, nous voulons avoir une fausse API avec laquelle travailler. Nous utiliserons json-server pour configurer une fausse API.
Cela est parfait pour simuler une vraie API et pour travailler avec le HttpClientModule.
- Installez
json-serveravec npmnpm install -D json-server
- Créez un fichier
db.jsonà la racine de votre projet avec le contenu que vous pouvez trouver sur :- https://bitbucket.org/treelevel/workspace/snippets/97xLMB
- Modifions notre fichier
package.jsonpour ajouter un nouveauscript: "json-server": "json-server --watch db.json"- Vous pouvez maintenant exécuter
npm run json-serverpour démarrer le serveur - Vous pouvez accéder aux données sur
http://localhost:3000/albumsdans votre navigateur - Gardez le serveur en marche pendant que vous travaillez sur le laboratoire... Vous pouvez ouvrir un autre terminal pendant que celui-ci fonctionne si vous en avez besoin.
Tâche 2 : Créer le service AlbumService
-
La première chose à faire est d'importer le
HttpClientModuledans le fichierapp.module.ts -
Ensuite, créez un nouveau service appelé
AlbumServiceen utilisant le CLI Angular -
Le service doit avoir les méthodes suivantes :
getAll(): Observable<Album[]>get(id: number): Observable<Album>add(album: Album): Observable<Album>update(album: Album): Observable<Album>delete(id: number): Observable<Album>getRandomAlbum(): Observable<Album>
-
Utilisez une combinaison de pipes pour obtenir un album aléatoire :
- utilisez GetAll pour obtenir tous les albums
- puis pipez les données pour obtenir un album aléatoire dans une map
[ASTUCE] Rappelez-vous que l'opérateur
mapest utilisé pour transformer les données émises par l'observable source. Vous pouvez l'utiliser pour obtenir un album aléatoire de la liste des albums et retourner cet album.
Tâche 3 : Consommer le service
- Dans les fichiers
album-detail-component.ts,album-of-the-day-component.ts,album-list.ts, remplacez leAlbumStaticServiceinjecté par le serviceAlbumService - Corrigez toutes les erreurs associées dans chaque composant en vous abonnant à l'
Observablerenvoyé par les méthodes duAlbumService
Tâche 3.1 : Correction de album-of-the-day-component.ts
-
Les choses ne fonctionneront probablement pas comme prévu, vous devrez résoudre les problèmes concernant le
album-of-the-day-component.ts -
Pour l'année, vous pouvez utiliser le pipe
datepour formater la date : -
Maintenant dans la console, nous avons une erreur :
-
Cela est dû au fait que le
albumOfThe-Dayn'est pas encore chargé lorsque le composant est rendu. -
Corrigeons cela en utilisant une directive
*ngIf:
Tâche 3.2 : Correction de album-detail.component.ts
- Lorsque vous accédez au composant de détails d'album, tout semble fonctionner, mais cliquer sur les boutons
nextoupreviousprovoquera une erreur. - Cela est dû au fait que nous devons récupérer l'erreur lancée par la méthode
getduAlbumServiceet rediriger vers leHomeComponentsi l'album n'existe pas.