Dropwizard - 组织您的项目,理解术语等

2022-09-03 00:26:42

我正在学习使用Dropwizard。我能够按照快速入门指南操作基本的 REST API。

在本文档中,有一个名为“组织项目”的部分。

它建议将项目组织为以下部分:项目 API、项目客户端、项目服务。

以下是我的问题/查询:

  1. 请笼统地解释“api”、“服务”和“客户”之间的区别。

  2. 有没有一个示例严格遵循上述使用dropwizard的约定?

  3. "...project-client应该使用这些类和HTTP客户端来为您的服务实现一个成熟的客户端“---既然'project-service'将具有REST API,那么为什么我们需要使用HTTP客户端呢?

谢谢!


答案 1
  1. Dropwizard 建议您遵循以下项目结构:

    {project_name}(即具有以下模块的父级)

    • {project_name}-api :应具有您在项目中使用的所有值对象/POJO。
    • {project_name}-client :应包含用于从外部 rest 服务获取数据的客户端代码。如果您没有,则可以将其排除在外。
    • {project_name}-服务:包含其余(服务、配置、资源、道...等)。
  2. 您可能会发现此示例很有帮助,即使客户端部件为空。

  3. 如第 1 点中客户端的简短描述中所述,如果您的项目对外部 rest 服务有任何调用,则相关的 (HTTP) 客户端代码应进入客户端模块内部。否则,排除模块本身。


答案 2

1) api - 顾名思义,它是在项目中定义为Dispresents(Pojo -Json/Xml)的接口/合约。这些模型定义您的 API 协定,这些协定可以与使用您的 API 的不同项目共享。

2)服务——实际业务逻辑和持久性。表示形式不必与实体对象(域对象)相同。这将以更清晰的方式拆分您的域和表示形式。域逻辑将不再与您的表示形式耦合。尽管这可能会导致对象结构方面的大量重复。

项目依赖性 - 取决于“api”,“client”

3)client- 一个Http客户端包装器,使用HttpClient或Jersey Client通过HTTP调用来调用其他Web服务。基于写入(最终用户)的合同测试。

项目依赖关系 - 取决于“api”

希望这有帮助。


推荐