Lequel utiliser pour créer un faux service Web pour tester l'application Angular 4?
angular
angular-httpclient
angular2-http
Aiyoub Amini
la source
la source
Réponses:
Utilisez la
HttpClient
classe deHttpClientModule
si vous utilisez Angular 4.3.x et supérieur:Il s'agit d'une version mise à niveau
http
du@angular/http
module avec les améliorations suivantes:Vous pouvez lire comment cela fonctionne dans le guide d'Insider sur les intercepteurs et la mécanique HttpClient dans Angular .
À l'avenir, l'ancien client http sera obsolète. Voici les liens vers le message de validation et les documents officiels .
Faites également attention à ce que l'ancien http ait été injecté à l'aide du
Http
jeton de classe au lieu du nouveauHttpClient
:De plus, les nouvelles
HttpClient
semblent nécessitertslib
en runtime, vous devez donc l'installernpm i tslib
et mettre à joursystem.config.js
si vous utilisezSystemJS
:Et vous devez ajouter un autre mappage si vous utilisez SystemJS:
la source
node_modules
dossier et exécuter ànpm install
nouveau'@angular/common/http': 'npm:@angular/common/bundles/common-http.umd.js',
Je ne veux pas être répétitif, mais simplement pour résumer d'une autre manière (fonctionnalités ajoutées dans le nouveau HttpClient):
J'ai écrit un article, où j'ai couvert la différence entre l'ancien "http" et le nouveau "HttpClient". Le but était de l'expliquer de la manière la plus simple possible.
Tout simplement sur le nouveau HttpClient en angulaire
la source
Ceci est une bonne référence, cela m'a aidé à basculer mes demandes http vers httpClient
https://blog.hackages.io/angular-http-httpclient-same-but-different-86a50bbcc450
Il compare les deux en termes de différences et donne des exemples de code.
Ce ne sont que quelques différences que j'ai traitées en changeant les services en httpclient dans mon projet (emprunt à l'article que j'ai mentionné):
Importation
Demande et analyse de la réponse:
@ angulaire / http
@ angulaire / commun / http
Remarque: vous n'avez plus à extraire explicitement les données renvoyées; par défaut, si les données que vous récupérez sont de type JSON, vous n'avez rien d'autre à faire.
Mais, si vous devez analyser tout autre type de réponse comme du texte ou un blob, assurez-vous d'ajouter le
responseType
dans la demande. Ainsi:Faire la requête HTTP GET avec
responseType
option:Ajout d'intercepteur
J'ai également utilisé des intercepteurs pour ajouter le jeton de mon autorisation à chaque demande:
Ceci est une bonne référence: https://offering.solutions/blog/articles/2017/07/19/angular-2-new-http-interface-with-interceptors/
ainsi:
C'est une très belle mise à niveau!
la source
Il existe une bibliothèque qui vous permet d' utiliser HttpClient avec des rappels fortement typés .
Les données et l'erreur sont disponibles directement via ces rappels.
Lorsque vous utilisez HttpClient avec Observable, vous devez utiliser .subscribe (x => ...) dans le reste de votre code.
En effet , Observable <
HttpResponse
<T
>> est liée à HttpResponse .Cela couple étroitement la couche http avec le reste de votre code .
Cette bibliothèque encapsule la partie .subscribe (x => ...) et expose uniquement les données et les erreurs via vos modèles.
Avec des rappels fortement typés, vous n'avez à gérer vos modèles que dans le reste de votre code.
La bibliothèque s'appelle angular-extended-http-client .
bibliothèque client angulaire-étendue-http sur GitHub
bibliothèque client angulaire-étendue-http sur NPM
Très simple d'utilisation.
Exemple d'utilisation
Les rappels fortement typés sont
Succès:
T
>T
>Échec:
TError
>TError
>Ajoutez un package à votre projet et dans votre module d'application
et dans les importations @NgModule
Vos modèles
Ton service
Dans votre service, vous créez simplement des paramètres avec ces types de rappel.
Ensuite, transmettez-les à la méthode get de HttpClientExt .
Votre composant
Dans votre composant, votre service est injecté et l' API getRaceInfo appelée comme indiqué ci-dessous.
La réponse et l' erreur renvoyées dans les rappels sont fortement typées. Par exemple. la réponse est de type RacingResponse et l' erreur est APIException .
Vous ne traitez vos modèles que dans ces rappels fortement typés.
Par conséquent, le reste de votre code ne connaît que vos modèles.
En outre, vous pouvez toujours utiliser la route traditionnelle et renvoyer Observable <
HttpResponse<
T>
> à partir de l'API de service.la source
HttpClient est une nouvelle API fournie avec 4.3, elle a mis à jour les API avec la prise en charge des événements de progression, la désérialisation json par défaut, les intercepteurs et de nombreuses autres fonctionnalités intéressantes. Voir plus ici https://angular.io/guide/http
Http est l'ancienne API et sera finalement obsolète.
Étant donné que leur utilisation est très similaire pour les tâches de base, je conseillerais d'utiliser HttpClient car c'est l'alternative la plus moderne et la plus facile à utiliser.
la source