我想实现一个HttpInterceptor,但不知何故,它什么也做不了。
实现HttpInterceptor的自定义服务
import {Injectable} from '@angular/core';
import {HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse, HttpErrorResponse} from '@angular/common/http';
import {AuthenticationService} from "./authentication.service";
import {Observable} from "rxjs/Observable";
@Injectable()
export class HttpInterceptorService implements HttpInterceptor {
constructor(private auth: AuthenticationService) {
}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log("INTERCEPTED!!");
const authHeader = this.auth.getAuthorizationHeader();
const authReq = req.clone({setHeaders: {Authorization: authHeader}});
return next.handle(authReq)
.do((event) => {
if (event instanceof HttpResponse) {
console.log(event);
}
}, (error: HttpErrorResponse) => {
console.log(error);
});
}
}在app.modules.ts中提供
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: HttpInterceptorService,
multi: true,
},
AuthenticationService
]不幸的是,它似乎什么也没做。我错过了什么吗?
发布于 2017-08-09 18:12:10
好吧,我发现了。为了执行get()调用,我仍然使用来自@angular/http的Http,而不是来自@angular/common/http的HttpClient。
现在它工作得很好。
https://stackoverflow.com/questions/45587506
复制相似问题