나는 HttpInterceptor
api의 새로운 각도 인 HttpClientModule
을 사용하고 있으며 상황에 처해있다. 여기에 나의 유스 케이스가있다.실제 호출하기 전에 다른 httpCall 호출하기 각도의 HttpInterceptor
내 응용 프로그램에서 어떤 서비스가 http 호출을하면 그 전에 또 다른 자동 http 호출을 만들고 그 결과를 로컬로 저장하려고합니다. 자동 통화가 완료되면 서비스의 http 호출을 진행하고 그 결과를 반환합니다.
내가하는 일은 다음과 같습니다. 성공적으로 내부 침묵 호출을 실행하고, 위의 코드에 문제가 지금
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (req.url.match(/api\//)) { // api call
http.post('/auth/silentCall', {user: 123}).subscribe(
(data) => {
console.log(data);
const clone = req.clone({ setHeaders: { 'Authorization ': tokenService.getToken() } });
return next.handle(clone).do((event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
console.log('Service's call response');
}
}, (err: any) => {
if (err instanceof HttpErrorResponse) {
console.log('Network call err', err);
}
});
},
(err) => {
if (err instanceof HttpErrorResponse) {
return Observable.throw(err);
}
);
} else {
console.log('Not an api call..It's an auth call');
return next.handle(req); // call original auth request.
}
}
을 (HttpInterceptor 사용), 그러나 결코 그 후 원래의 API 호출을 호출하지 않습니다. 따라서 서비스는 영원히 기다리고 있습니다.
실제 서비스 요청을 게시하시기 바랍니다 (가입의 경우, 또는 에러 핸들러 함수)를 호출하기 때문에
는 또한 만약 조건이 제거 된 있습니다. –