0 Tage Serie
javascript / intermediate
Snippet

Abfangen und Transformieren von HTTP-Fehlern mit funktionalen Interzeptoren

Funktionale HTTP-Interzeptoren (`HttpInterceptorFn`) ermöglichen das Abfangen von Backend-Netzwerkfehlern und deren Überführung in ein standardisiertes, anwendungsspezifisches Fehlerdatenmodell. Dies entkoppelt UI-Services von technischen `HttpErrorResponse`-Strukturen.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import { HttpInterceptorFn, HttpErrorResponse } from '@angular/common/http';
import { catchError, throwError } from 'rxjs';
export interface AppError {
statusCode: number;
friendlyMessage: string;
}
export const errorTransformInterceptor: HttpInterceptorFn = (req, next) => {
return next(req).pipe(
catchError((error: HttpErrorResponse) => {
let friendlyMessage = 'An unexpected error occurred.';
if (error.status === 404) {
friendlyMessage = 'The requested resource was not found.';
} else if (error.status === 403) {
friendlyMessage = 'You do not have permission to perform this action.';
}
const appError: AppError = {
statusCode: error.status,
friendlyMessage
};
return throwError(() => appError);
})
);
};
angular
Erklärung
1
export const errorTransformInterceptor: HttpInterceptorFn = (req, next) => {
Definiert einen eigenständigen funktionalen Interzeptor zur Verarbeitung ausgehender Requests und eingehender Responses.
2
catchError((error: HttpErrorResponse) => {
Fängt auftretende HTTP-Fehlerereignisse innerhalb der RxJS-Pipeline ab.
3
return throwError(() => appError);
Wirft das standardisierte Domänen-Fehlerobjekt über eine Factory-Funktion an Abonnenten weiter.