1

나는 HttpInterceptor를 사용하여 오류를 포착하여 모달로 표시합니다. 오류 코드 및 메시지 외에도 오류에 대한보다 정확한 설명 (예 : 500 내부 서버 오류)이 실제로 포함 된 응답 본문을 보여 드리고자합니다. 각도로 어떻게 이것을 할 수 있습니까? (4.3.6 버전을 사용 중입니다.)HTTP 오류 응답 본문 HttpInterceptor에서 각도로 액세스

관련 질문은 이미 보았지만 HttpErrorResponse._body 또는 이와 비슷한 대답은 저에게 적합하지 않습니다. 또한 콘솔에서 오류 응답을 검사 할 때 HttpErrorResponse.error가 null로 설정됩니다.

@Injectable() 
export class HttpErrorInterceptor implements HttpInterceptor { 
    public constructor(private httpErrorService: HttpErrorService) { } 

    public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { 
    return next.handle(req).do(event => { 
    }, (error: HttpErrorResponse) => { 
     console.log('HTTPERROR INTERCEPTOR'); 
     console.log(error); 
     if (error.status >= 400) { 
     this.httpErrorService.onError(error); 
     } 
    }); 
    } 
} 

답변

1

몸이 error 속성에 사용할 수 있어야합니다, 그래서 : 여기

내 인터셉터 현재 모습입니다

: 여기
return next.handle(req).do(event => { 
}, (error: HttpErrorResponse) => { 
    console.log(error.error); // body 
    ... 
}); 

이 구현 from the sources의 요지입니다
if (ok) { 
    ... 
} else { 
    // An unsuccessful request is delivered on the error channel. 
    observer.error(new HttpErrorResponse({ 
    // The error in this case is the response body (error from the server). 
    error: body, <-------------------- 
    headers, 
    status, 
    statusText, 
    url: url || undefined, 
    })); 
} 

요격기 뒤에 숨어있는 역학에 대해 자세히 알아 보려면 r EAD :

+1

감사합니다! 그것은 실제로 지금 일합니다. 나는 버전 4.3.6에 실제로 (내 원래의 질문에 업데이 트되었습니다) 거기에 오류가 null이되었습니다. 하지만 이제 버전 4.4.6에서 모든 것이 잘 작동합니다. – Severin

+0

@Severin, 환영합니다) –