Angular Interceptor를 사용하여 사용자 정의 응답 헤더 캡처
6716 단어 webdevjavascriptangular
HttpInterceptor
HttpInterceptor 인터페이스는 HTTP 요청과 응답을 가로채서 전달하기 전에 변환하거나 처리하는 수단을 제공합니다.
HttpInterceptor 인터페이스를 구현하는 서비스를 만들어 봅시다.
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable, throwError } from 'rxjs';
import { catchError, filter } from 'rxjs/operators';
@Injectable()
export class ErrorInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request);
}
}
내 특정 시나리오의 경우 HTTP 응답, 특히 내부 서버 오류(HTTP 상태 코드 500)에만 관심이 있었습니다. 파이프를 추가하고 필터 및 catchError 연산자를 사용합니다.
return next.handle(request).pipe(
filter(event => event instanceof HttpResponse),
catchError(error => {
if(error.status === 500) {
const requestId = error.headers.get('request-id');
...
}
return throwError(error);
})
);
HTTP 응답과 관련된 항목을 필터링한 다음 발생하는 오류를 포착합니다. 오류 상태 500을 확인한 다음 request-id 헤더 값을 캡처합니다.
그런 다음 이 정보를 다른 서비스에 전달하거나 로컬 저장소에 저장할 수 있습니다. 이 정보를 최종 사용자에게 표시하는 루틴을 만들고 문제를 보고할 때 이를 포함할 수 있습니다!
인터셉터 제공
인터셉터를 실제로 사용하려면 인터셉터를 사용하려는 모든 모듈에서 공급자로 정의해야 합니다. 제 특정 사용 사례에서는 전체 애플리케이션에서 오류를 캡처할 수 있도록 앱 모듈에서 제공했습니다.
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { ErrorInterceptor } from '/path/to/interceptor';
@NgModule({
..
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true }
]
..
})
export class AppModule {}
여러 인터셉터를 사용할 수 있지만 Angular는 제공한 순서대로 인터셉터를 제공합니다. 예를 들어 인터셉터 A, B, C를 차례로 제공하면 요청은 A > B > C로 흐르고 응답은 C > B > A로 흐릅니다.
https://nightwolf.dev에서 당사 웹사이트를 방문하고 Facebook 및 !
Reference
이 문제에 관하여(Angular Interceptor를 사용하여 사용자 정의 응답 헤더 캡처), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nightwolfdev/capture-custom-response-header-using-angular-interceptor-oe9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)