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 eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Ricevere notifiche sui test con Azure Load Testing
Creare una custom property in GitHub
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
La gestione della riconnessione al server di Blazor in .NET 9
Implementare l'infinite scroll con QuickGrid in Blazor Server
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Estrarre dati randomici da una lista di oggetti in C#
Filtering sulle colonne in una QuickGrid di Blazor
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Utilizzare Azure AI Studio per testare i modelli AI
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
I più letti di oggi
- Creare agenti facilmente con Azure AI Agent Service
- Loggare le query più lente con Entity Framework
- Disabilitare le run concorrenti di una pipeline di Azure DevOps
- Rendere i propri workflow e le GitHub Action utilizzate più sicure
- Gestione degli eventi nei Web component HTML
- Fornire parametri ad un Web component HTML
- Utilizzare Hybrid Cache in .NET 9