我创建了一个发出简单GET请求的服务:
private accountObservable = null;
constructor(private _http: Http) {
}
getAccount () {
// If we have account cached, use it instead
if (this.accountObservable === null) {
this.accountObservable = this._http.get('http://localhost/api/account')
.map(res => <Account> res.json().data)
.catch(this.handleError);
}
return this.accountObservable;
}
Run Code Online (Sandbox Code Playgroud)
我在我的bootstrap函数中添加了该服务以在全局范围内提供它(我希望为所有组件提供相同的实例):
provide(AccountService, { useClass: AccountService })
Run Code Online (Sandbox Code Playgroud)
问题是当我在不同的组件中调用此服务时,每次都会发出GET请求.因此,如果我将其添加到3个组件,即使我检查是否已存在可观察量,也会发出3个GET请求.
ngOnInit() {
this._accountService.getAccount().subscribe(
account => this.account = account,
error => this.errorMessage = <any>error
);
}
Run Code Online (Sandbox Code Playgroud)
如何防止多次发出GET请求?
我正在开始一个新项目,并且有兴趣将其设计为微服务.我试图绕过它:
假设我有订单服务和产品服务.现在我想制作一个报告服务,它为我提供包含某个产品类别的产品的所有订单.
由于订单不了解产品,这意味着我需要获取所有订单,循环它们并获取每个订单的产品,然后返回那些匹配的产品.
这个假设是正确的还是有更高效的方法来实现微服务?