intercept(req: HttpRequest<any>, next: HttpHandler) {
const started = Date.now();
let ok: string;
// 서버에서 받은 응답 옵저버블을 체이닝합니다.
return next.handle(req)
.pipe(
tap({
next:event => ok = event instanceof HttpResponse ? 'succeeded' : '',
error:err=>ok='fail',
}),
finalize(() => {
const elapsed = Date.now() - started;
const msg = `${req.method} "${req.urlWithParams}" ${ok} in ${elapsed} ms.`;
this.messenger.add(msg);
})
);
}
tap오퍼레이터에 성공과 실패에따라 수행할 작업을 구분할 수 있다.