在angular应用程序中组织http服务的正确方式是什么



当我想从后端获取数据时,我在与组件分离的服务中使用http客户端。因此,为了在组件中获得数据(例如,参与者列表(;工厂;并订阅它返回的可观测值。它工作得很好。

@Injectable()
export class Factory{
constructor(private httpClient : HttpClient){}
getActors(): Observable<Actor[]>{
return this.httpClient.get<Actor[]>('api/actor');
}
}

但是,当我需要演员列表的同一组件中的其他数据(例如电影列表(时,我只需要在同一工厂服务中声明另一个方法。从同一服务的不同方法返回的数据在数据库中可能相互关联,也可能不相互关联。对我来说,把所有东西都放在一个服务中,在项目的一个单独的大部分(模块(中使用更容易。

@Injectable()
export class Factory{
constructor(private httpClient : HttpClient){}
getActors(): Observable<Actor[]>{
return this.httpClient.get<Actor[]>('api/actor');
}
getMovies(): Observable<Movie[]>{
return this.httpClient.get<Movie[]>('api/movie');
}
}

现在,我经常需要在项目的不同部分(不同的模块(中接收相同的数据(电影列表(。所以我在另一部分创建了一个新的工厂服务。在其中,我声明了一个与第一个服务中的方法相同的方法。

我觉得这样并不可取。例如,如果API发生更改,我将不得不在项目的两个不同部分对其进行更改。这违背了DRY原则。

我看到的另一种方法是为项目中的每个实体创建单独的服务。但是,我必须在组件的构造函数中注入尽可能多的服务,因为它需要多少实体

在angular应用程序中组织http服务的正确方法是什么?

这是一个很好的问题,经常被忽视,当你的应用程序开始扩展时,这可能会让你头疼。这个问题的答案会非常有主见,所以对我的建议持保留态度。

什么时候应该进入服务,取决于它的逻辑和程度,这是一条很好的界限。它将与经验和其他项目合作。

我认为将大部分(如果不是全部的话(http调用连接到一个文件是个好主意,因为正如您所说,许多组件(通过服务(很可能会共享这些http调用。在那里,您还可以将环境变量配置为要使用的url。我把GeneralRequestService作为最后一层。然后所有服务都可以访问它。否则,循环依赖注入错误很快就会出现。

相关内容

  • 没有找到相关文章

最新更新