【发布时间】:2018-01-04 03:49:05
【问题描述】:
我想拦截 401 和其他错误,以便做出相应反应。这是我的拦截器:
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);
}
});
}
}
虽然这适用于 200 个请求,但 它不会拦截错误响应
我在 chrome 的开发控制台中看到的是这样的:
zone.js:2616 GET http://localhost:8080/backend/rest/wrongurl 404(不是 找到)
或者这个
zone.js:2616 获取http://localhost:8080/backend/rest/url 401 (未经授权)
我希望我的拦截器处理这个问题。我错过了什么?
【问题讨论】:
标签: angular interceptor