api - 客户端服务的对应物(模式)是什么?
问题描述
假设我确实有一个服务,它只是一个 REST-API。这个 rest api 提供了一些数据。
据我了解,这是有道理的,我可以将从该服务发送到该服务的数据封装到DTO 中。这完全是有道理的,因为您将拥有一些业务对象,但通常您需要以某种方式对它们进行序列化。因此,据我了解,这将是一种普遍接受且已知的方式来抽象它关于这部分的内容。
然后通过 REST-API 发送此 DTO。关于服务器端,它非常直接,有一些提供数据或接收数据的控制器,我没有看到任何问题(至少现在)。
所以关于我的问题。在客户端,有一些对象将访问这个 API,这个对象在我的实现中包含一个 http 客户端(不确定我是否将它们与这个对象分离),它还包含访问 api 的方法。因此,以一种或另一种方式,抽象出 http 客户端的使用并访问 API。
您如何命名访问 API 的对象?
我现在将它们命名为 XXXManager/XXXHandler/...,但这些名称感觉太笼统了,我觉得必须为此制定一些约定或模式?将它们命名为 XXXService 也感觉不完全正确,因为服务对我来说就像服务器端的部分,这个对象正在访问服务。
那么如何命名这种对象,是否有一些更深层次的模式来处理这种服务/api 访问器?
解决方案
可以在这里工作的模型/模式是一个经典的layered architecture
,它的工作方式如下:
HttpClient 应该包裹在一个类(让我们命名它
ApiClient
)中,该类公开访问 REST API 的方法。在这些方法中的每一个中,httpClient 都用于执行 HTTP 调用。有一层 Service/Manager 类使用
ApiClient
并应用它们自己的业务逻辑。有一层 UI 组件也注入服务/管理器来获取数据并将其呈现在 UI 上。
通过这种方式,您可以解耦层,从而提高代码的可伸缩性和可测试性。
命名在某种程度上取决于您拥有的客户端实现/框架的类型。
如果您有一个 Web 前端客户端,那么该名称TransactionService
会告诉我该类与某些外部事务服务通信(Service
不是与服务器端组件相关的命名)。
例如,此命名模型适用于Angular。
推荐阅读
- angular - Angular 应用程序无法在 Docker 中启动,缺少 angular-devkit package.json
- java - 如何测试以查看 java Junit 5 中的抽象方法?
- java - Java SimpleDateFormat 将字符串数组列表转换为日期列表
- python - GeocoderUnavailable:使用 geopy 和 Nominatim 的某些地址的 HTTPSConnectionPool 错误
- c# - 是否可以从同一个应用程序登录到两个不同的 Application Insights 实例?
- r - R中的数据可视化澄清密度/直方图
- go - Librdkafka Go 消费者和 websocket 问题
- gtkmm - 如何在 gtkmm3 中使用单选按钮?
- python - TypeError:nlargest() 得到了一个意外的关键字参数“列”
- php - PHP + GnuPG 无法加密文件,出现错误 - 没有加密密钥