Durante lo sviluppo di applicazioni web basate su Javascript è importante tenere traccia delle chiamate AJAX. Sebbene tutti i browser abbiano un tracer HTTP incorporato, poter loggare dati aggiuntivi inerenti all'applicazione aiuta a capire meglio l'origine delle chiamate AJAX e il motivo della chiamata. Infatti, capita spesso che vengano effettuate involontariamente (per via di bug) chiamate AJAX che rallentano l'applicazione peggiorandone l'usabilita.
Angular 2 non ha un interceptor per la classe Http, quindi l'unico modo per loggare le chiamate è fare l'override della classe e dei suoi metodi aggiungendo le informazioni di logging prima della chiamata al metodo base.
import { Http, ConnectionBackend, Response, RequestOptions, RequestOptionsArgs } from '@angular/http';
import { Injectable } from '@angular/core';
@Injectable()
export class LogHttp extends Http {
constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {
super(backend, defaultOptions);
}
get(url: string, options?: RequestOptionsArgs): Observable<Response> {
console.log("log");
return super.get(url, options);
}
}Una volta registrata la classe, dobbiamo fare in modo che quando la classe Http viene iniettata dal'injector di Angular 2, in realtà venga creata un'istanza di LogHttp. Per fare questo dobbiamo registrare la nuova classe nella sezione providers del modulo di Angular 2.
import { FormsModule } from '@angular/forms';
import { HttpModule, Http, XHRBackend, RequestOptions } from '@angular/http';
@NgModule({
providers: [
{
provide: Http,
useFactory: (backend: XHRBackend, defaultOptions: RequestOptions) {
return new LogHttp(backend, defaultOptions);
},
deps: [XHRBackend, RequestOptions]
}
]
});
export class AppModule { }Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire pubblicazione Kubernetes tramite .NET Aspire
Evitare memory leaks nelle closure JavaScript
Abilitare automaticamente il force push di un gruppo su Azure DevOps
Raggruppare risorse in .NET Aspire
Generare una User Delegation SAS in .NET per Azure Blob Storage
Analizzare il contenuto di una issue con GitHub Models e AI
Rendere le variabili read-only in una pipeline di Azure DevOps
Recuperare le subissue e il loro stato di completamento in GitHub
Creare agenti facilmente con Azure AI Agent Service
Utilizzo delle stepped value functions nel CSS
Gestire progetti .NET + React in .NET Aspire
Controllare la velocità di spostamento su una pagina HTML


