如何构造Angular 6 http服务?

如何构造Angular 6 http服务?,angular,Angular,目前,我将每个对后端的API调用都放在一个文件webService.ts下 但是,随着我的API变得越来越复杂,将有许多到请求的路由,webServices.ts可能非常长,而且很难管理 管理大型项目的所有API调用服务的正确方法是什么 我使用的是angular/common/http 谢谢大家! 您可以创建一个服务来创建GET/POST/PUT请求,该请求将接受来自其他服务的类型和url 通用服务将通过具有必要参数的相关组件服务调用 我还建议使用首先,创建一个BaseApiService抽象类

目前,我将每个对后端的API调用都放在一个文件webService.ts下

但是,随着我的API变得越来越复杂,将有许多到请求的路由,webServices.ts可能非常长,而且很难管理

管理大型项目的所有API调用服务的正确方法是什么

我使用的是angular/common/http

谢谢大家!

您可以创建一个服务来创建GET/POST/PUT请求,该请求将接受来自其他服务的类型和url

通用服务将通过具有必要参数的相关组件服务调用


我还建议使用

首先,创建一个
BaseApiService
抽象类,该类包含常见的内容,例如:

如果您将响应转换为模型,请创建一个尽可能通用的方法。记住一般地键入这个类,使用typescript作为您的朋友

如果您已经有许多服务,那么很容易识别可以提取到该类的常见和重复代码

这个抽象类可能包含一些常量,如api url或一些您可能使用的参数,如默认页面大小

然后,通过扩展这个类并覆盖必要的服务来创建特定的服务

不要使用common/http。HttpClient更好、更灵活,例如它允许使用拦截器。拦截器的一个很好的用途是自动将带有auth令牌的头附加到所有请求中

我可以给你很多提示,但我正在手机上打字-D

更新


现在我在一台计算机上,看看我的,希望它能帮助您。

我们构建前端http服务,以与后端服务相对应。因此,当后端有像
/api/product
/api/transactions
这样的服务时,我们有两个前端服务:
product.service.ts
transactions.service.ts
。在这些服务中,我们拥有与后端相同的功能。这些服务还将dto的响应映射到我们的前端模型接口


当一个以上的模块使用更新的内容时(不管是服务还是组件),我们将其放在共享/公共目录中。

因此,没有一个中心文件可以放置请求URL,我们需要在其他地方调用URL。例如,在webService文件中没有函数getComments=http.get('localhost/comments'),而是在调用文件中有一个修改过的函数,如getComments('localhost/comments')。基本上,我要再次问的是如何构造URL。它应该在environment.ts中,你可以在你的每个服务中加载它。如果我没有webService.ts。相反,我应该编写一个修改过的HTTP类?这只是那篇文章的后续内容。它基于端点模块化api服务。例如,我们将提供广场服务和汉堡服务。将这两个apiServices组织在一个共享文件夹中,并且我可以在不同的组件中调用它们,这是一个好主意吗?或者有更好的方法来构造它吗?首先,我仍然不知道抽象类在API调用中的用法?如果我只想从后端获取一些注释,为什么不使用管道将其转换为一个模型,因为http.get返回一个可观察的值?其次,当您说使用HttpClient时,您的意思是:从“@angular/common/http”导入{HttpClientModule}?这来自angular.ioAbstract类是无法实例化的普通类。您可以定义必须在扩展它的类上创建的空方法。也可以创建非空方法。在扩展它的类上,可以重写方法。从typescript文档中读取此文档:是。HttpClient就是这个。此外,您还可以使用管道来转换数据,但要避免始终放置管道。我使用map操作符并调用我的服务的一个方法来处理转换和所有it细节。