2017-08-29 133 views
1

我向服務器發送了很多HTTP請求,並且服務器以新的訪問令牌(可能在標頭或正文中)返回每個響應。Angular2中的響應攔截器

是否有任何方法可以在完成之前或之後處理所有響應,如在某些後端框架中的中間件請求?

回答

6

如果您正在使用角4.0以上的版本,你可以看看HttpClientModule爲攔截器提供支持。

import { Observable } from 'rxjs'; 
import {Injectable} from '@angular/core'; 
import {HttpEvent, HttpInterceptor, HttpHandler, HttpRequest} from '@angular/common/http'; 
import { HttpErrorResponse } from "@angular/common/http"; 

@Injectable() 
export class AngularInterceptor implements HttpInterceptor { 
    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { 
    return next.handle(req).do(event => {}, err => { 
     if(err instanceof HttpErrorResponse){ 
      console.log("Error Caught By Interceptor"); 
      //Observable.throw(err); 
     } 
    }); 
    } 
} 

註冊,如果你不使用的角度V4檢查SO link

這個答案app.module

@NgModule({ 
    declarations: [ 
     AppComponent 
    ], 
    imports: [ 
     BrowserModule, 
     HttpClientModule 
    ], 
    providers: [ 
     [ { provide: HTTP_INTERCEPTORS, useClass: 
       AngularInterceptor, multi: true } ] 
    ], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { 
} 

更多關於HttpClientModule