【发布时间】:2017-08-04 23:04:04
【问题描述】:
目前我的应用程序有一个数据服务,它向服务器发出 http 请求以获取数据。每个组件都会单独调用此服务以获取所需的数据。
public getHospitals() {
return this._http.get(this.baseUrl + "/hospitals/")
.map(res => res.json())
.map(json => automapper.map(typeof (JSON), Hospital, json));
}
public getClinics() {
return this._http.get(this.baseUrl + "/clinics/")
.map(res => res.json())
.map(json => automapper.map(typeof (JSON), Clinic, json));
}
当我加载我的示例页面时,我有一个 Hospital 组件和一个 Clinic 组件。这两个组件调用数据服务中的相应方法。
我最近扩展了服务器以允许单个请求指定它需要什么数据。下面是一个如何调用它的示例。
public getLocalData(body) {
const headers = new Headers({ "Content-Type": "application/json" });
const options = new RequestOptions({ headers });
return this._http.post(this.baseUrl, JSON.stringify(body), options)
.map(res => res.json());
}
public getHospitals() {
return this.getLocalData(["Hospitals"])
.map(json => automapper.map(typeof (JSON), Hospital, json.Hospitals));
}
public getClinics() {
return this.getLocalData(["Clinics"])
.map(json => automapper.map(typeof (JSON), Clinic, json.Clinics));
}
这可以改为这样调用,这将返回所有数据:const localData = this.getLocalData(["Hospitals", "Clinics"]);
我的问题是,如何修改这两个组件来为getLocalData 方法构建body 参数并且只发出一个http 请求?
编辑:我也在寻求扩展它,以便最终我可以说 10 多个组件,每个组件都有自己的一组本地数据要请求。
【问题讨论】:
标签: angular typescript