GOOGLE ADS

Sonntag, 17. April 2022

Wie kann ich Requests fetch und interceptor verwenden?

Ich habe ein Problem mit dem Angular Interceptor. Ich habe fetcheine HTTP-Anfrage erhalten. Und ich möchte, dass ich den Fehler mit dem Interceptor fange, wenn es fehlschlägt. Aber als ich eine Get-Anfrage sende, hat mein Interceptor nicht funktioniert. Interceptor sieht diese Anfrage nicht. Wenn ich die Get-Anfrage bearbeite und HttpClient (this.http.get...) verwende - alles gut, alles funktioniert. Wie kann ich Requests fetch und interceptor verwenden?

@Injectable()
export class TestInterceptor implements HttpInterceptor {
constructor() {
console.log('constructor of interceptor');
}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log('interceptor work');
return next.handle(req);
}
}

@NgModule({
declarations: [
TestComponent
],
imports: [
SharedModule,
HttpClientModule
],
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: TestInterceptor,
multi: true
},
]
})
export class TestModule {}

sendRequest(url: string, method = 'GET', body = null): Promise<any> {
let response: Response;
return fetch(url, {
method,
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: body? JSON.stringify(body): null
});
}


Lösung des Problems

Kurz gesagt: Sie müssen verwenden HttpClient, um Anfragen abzufangen, nur verwenden fetch()wird nicht funktionieren. Obwohl dies nicht ausdrücklich in den Dokumenten angegeben ist, wird dies impliziert


  • Die Hinweise zur HttpInterceptor-Nutzung erwähnen, dass das Abfangen an gebunden ist HttpClientModule(das nur einmal importiert und dann mit bezeichnet werden sollte HttpClient)

  • Der HttpClient-Leitfaden, in dem erwähnt wird, dass „Entwickler diese Aufgaben ohne Abfangen explizit für jeden HttpClient-Methodenaufruf implementieren müssten".

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...