首页 > 解决方案 > 客户端服务的对应物(模式)是什么?

问题描述

假设我确实有一个服务,它只是一个 REST-API。这个 rest api 提供了一些数据。

据我了解,这是有道理的,我可以将从该服务发送到该服务的数据封装到DTO 中。这完全是有道理的,因为您将拥有一些业务对象,但通常您需要以某种方式对它们进行序列化。因此,据我了解,这将是一种普遍接受且已知的方式来抽象它关于这部分的内容。

然后通过 REST-API 发送此 DTO。关于服务器端,它非常直接,有一些提供数据或接收数据的控制器,我没有看到任何问题(至少现在)。


所以关于我的问题。在客户端,有一些对象将访问这个 API,这个对象在我的实现中包含一个 http 客户端(不确定我是否将它们与这个对象分离),它还包含访问 api 的方法。因此,以一种或另一种方式,抽象出 http 客户端的使用并访问 API。

您如何命名访问 API 的对象?

我现在将它们命名为 XXXManager/XXXHandler/...,但这些名称感觉太笼统了,我觉得必须为此制定一些约定或模式?将它们命名为 XXXService 也感觉不完全正确,因为服务对我来说就像服务器端的部分,这个对象正在访问服务。


那么如何命名这种对象,是否有一些更深层次的模式来处理这种服务/api 访问器?

标签: apidesign-patternsarchitecturesoftware-design

解决方案


可以在这里工作的模型/模式是一个经典的layered architecture,它的工作方式如下:

  • HttpClient 应该包裹在一个类(让我们命名它ApiClient)中,该类公开访问 REST API 的方法。在这些方法中的每一个中,httpClient 都用于执行 HTTP 调用。

  • 有一层 Service/Manager 类使用ApiClient并应用它们自己的业务逻辑。

  • 有一层 UI 组件也注入服务/管理器来获取数据并将其呈现在 UI 上。

通过这种方式,您可以解耦层,从而提高代码的可伸缩性和可测试性。

命名在某种程度上取决于您拥有的客户端实现/框架的类型。

如果您有一个 Web 前端客户端,那么该名称TransactionService会告诉我该类与某些外部事务服务通信(Service不是与服务器端组件相关的命名)。

例如,此命名模型适用于Angular


推荐阅读