HttpInterceptor Angulaire 4.3: l'Interception de 400 réponses d'erreur
Je voudrais pour intercepter 401 et d'autres erreurs afin de réagir en conséquence. C'est mon intercepteur:
import { LoggingService } from './../logging/logging.service';
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpHandler, HttpRequest, HttpEvent, HttpResponse, HttpErrorResponse } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/do';
@Injectable()
export class TwsHttpInterceptor implements HttpInterceptor {
constructor(private logger: LoggingService) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
this.logger.logDebug(request);
return next.handle(request)
.do(event => {
if (event instanceof HttpResponse) {
this.logger.logDebug(event);
}
});
}
}
Bien que cela fonctionne bien pour 200 demandes, il n'a pas d'intercepter l'erreur respsonses
Tout ce que je vois dans google chrome dev console est: est-ce
de la zone.js:2616 OBTENIR http://localhost:8080/backend/rest/wrongurl 404 (Pas
Trouvé)
Ou ce
de la zone.js:2616 OBTENIR http://localhost:8080/backend/rest/url 401
(Non autorisée)
Je voudrais que mon intercepteur. Ce qui me manque ?
OriginalL'auteur Tim | 2017-07-28
Vous devez vous connecter pour publier un commentaire.
Http
envoie les erreurs vers le bas le flux d'erreur d'une observable, donc vous devez les attraper avec.catch
(vous pouvez lire plus sur ce ici).L'ajout de "retour Observables.jeter(err);" résout le problème. Modifier votre réponse et je vais l'accepter !
comme ça? désolé je n'ai pas le tester avant de poster 🙂
mise en forme du code des œuvres dans les commentaires avec la syntaxe ` ainsi
pour le rxjs 6 monde: retour suivant.la poignée(demande) .pipe( tap(event => console.journal(event)), catchError(err => throwError(err)), );
OriginalL'auteur 0mpurdy
Ce n'est sans doute pas trop tard pour vous, mais j'espère que quelqu'un va le trouver utile... C'est une façon de réécrire l'-dessus instruction de retour d'erreur du journal des réponses, trop:
Je suis en utilisant la même méthodologie pour envoyer automatiquement tous 401 non autorisé réponses directement à notre méthode de déconnexion (plutôt que de vérifier pour un 401 à chaque appel pour http):
Il fonctionne comme un charme indiscutable. 🙂
Si vous vouliez dire "HttpErrorResponse" dans votre question (plutôt que HttpResponse), le premier exemple dans ma réponse, ce que montre. Le succès de réponses et les réponses d'erreur sont enregistrés, puis est passé comme s'il n'y avait aucun intercepteur à tous.
je ne pouvais pas recevoir mes erreurs de validation.
Comment sont vos erreurs de validation est envoyé?
OriginalL'auteur Enrika
Pour intercepter la réponse Http erreur angulaire 6, je fais un petit truc pour la conversion des Observables à la Promesse:
OriginalL'auteur Ângelo Polotto