Мой перехватчик запросов на приложения Angular 5 работает, так как я могу прикрепить к запросу jwt.
Мой перехватчик ответов не работает, поскольку он в первую очередь влияет на мои запросы, когда я делаю запросы.И это также не перехватывает ответы от моего API.
Примечание: Без перехватчика ответа запросы работают нормально (только с перехватчиком запросов).
То есть перехватчик ответа
@Injectable()
export class ResponseInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req)
.map(resp => {
if (resp instanceof HttpResponse) {
console.log('Response is ::');
console.log(resp.body)
}
return resp;
}).catch(err => {
console.log(err);
if (err instanceof HttpResponse)
{
console.log(err.status);
console.log(err.body);
}
return Observable.of(err);
});
}
}
Это перехватчик запросов
intercept(req: HttpRequest<any>,
next: HttpHandler): Observable<HttpHeaderResponse | HttpResponse<any> | HttpEvent<any>> {
const idToken = localStorage.getItem("admintoken") ? localStorage.getItem("admintoken") : localStorage.getItem("token");
if (idToken) {
const cloned = req.clone({
headers: req.headers.set("Authorization",
"Bearer:" + idToken)
});
return next.handle(cloned);
}
else {
return next.handle(req);
}
}
Это пример HTTP-запроса через модуль HttpClient, он находится внутри службы для выполнения API-запросов.
getGroups():Observable<Group[]>{
return this.http.post(this.all_groups_url,{
headers: new HttpHeaders().set('Accept', "application/json;q=0.9,*/*;q=0.8")
})
.map((groups:Group[]) => {
if(groups){
return groups;
}
else{
return null;
}
})
.pipe(
catchError(this.handleError)
)
}
А вот мой раздел провайдеров app.module
providers: [
AuthService,
AuthGuardService,
UnauthGuardService,
{
provide: HTTP_INTERCEPTORS,
useClass: ResponseInterceptor,
multi: true
},
{
provide: HTTP_INTERCEPTORS,
useClass: JWTInterceptor,
multi: true
}
],
Мне нужно знать, как заставить перехватчики запросов и ответов работать вместе, сейчас работает только перехватчик запросов, и кажется, что перехватчик ответов блокирует его, а неделает свою работу.
И мне нужно перехватить ответы от API для просроченных токенов и неактивированных пользователей.