【发布时间】:2018-03-28 03:13:05
【问题描述】:
我正在开发一个 Angular 4 应用程序,我遇到了一种情况,我有一个 htpInterceptor 基础服务类,它具有 Typescript 通用 GET、POST 和 DELETE 功能。我希望我所有的角度服务都使用这个基类。现在我不确定是否应该将这个基础服务注入到我的所有服务中,或者我应该使用这个基础服务类扩展我的所有服务类。
我应该使用,
export class AuthService extends HttpInterceptorService
或者
constructor(private _interceptor:HttpInterceptorService) { }
这两种方法有什么区别(优点和缺点)。
以下是我的基础服务类,
@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());
}
}
【问题讨论】:
-
您是否考虑过迁移到 Angular 4.3 及更高版本中提供的较新的
HttpClient,并使用现成的HttpInterceptor? -
@R.理查兹,我们的项目仍在使用 Angular 4.2,不过我们计划在未来几个月内将其迁移到 4.3。
标签: angular typescript