Ich arbeite an einer eckigen 4 App und ich kam zu einer Situation, wo ich eine htpInterceptor Basis-Service-Klasse, die allgemeine GET, POST und DELETE-Funktionen hat. Ich möchte, dass alle meine eckigen Dienste diese Basisklasse verwenden. Jetzt bin ich mir nicht sicher, ob ich diesen Basisdienst in alle meine Dienste einspeisen sollte ODER ich sollte alle meine Dienstklasse um diese Basisdienstklasse erweitern.Verlängert eine Basisklasse vs injizieren in Typoskript
Sollte ich, export class AuthService extends HttpInterceptorService
OR constructor(private _interceptor:HttpInterceptorService) { }
Was ist der Unterschied (Vor- und Nachteile) zwischen diesen beiden Ansatz.
Folgende ist meine Basis-Serviceklasse,
@Injectable()
export class HttpInterceptorService {
constructor(private _http: Http) { }
get<T>(relativeUrl: ApiUrl): Observable<T> {
const baseUrl = environment.apiBaseUrl + environment.apiLearnerUrl;
let apiUrl = baseUrl + relativeUrl.toString();
return this._http.get(apiUrl).map(res => <T>res.json());
}
post<T>(relativeUrl: ApiUrl, inputData: any): Observable<T> {
const baseUrl = environment.apiBaseUrl + environment.apiLearnerUrl;
let apiUrl = baseUrl + relativeUrl.toString();
if (inputData === undefined) {
return this._http.post(apiUrl, undefined).map(res => <T>res.json());
}
else {
return this._http.post(apiUrl, inputData).map(res => <T>res.json());
}
}
delete<T>(relativeUrl: string): Observable<T> {
const baseUrl = environment.apiBaseUrl + environment.apiLearnerUrl;
let apiUrl = baseUrl + relativeUrl;
return this._http.delete(apiUrl).map(res => <T>res.json());
}
}
Haben Sie erwogen, auf den neueren 'HttpClient' zu wechseln, der in Angular 4.3 und höher verfügbar ist und den leicht verfügbaren [' HttpInterceptor'] (https://angular.io/guide/http#advanced-usage) verwendet? –
@R. Richards unser Projekt benutzt immer noch eckige 4.2, wir planen jedoch, es in den kommenden Monaten auf 4.3 zu migrieren. – Akash