17

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

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

它建议将您的项目组织为以下部分:project-api、project-client、project-service。

这是我的问题/疑问:

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

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

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

谢谢!

4

2 回答 2

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

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

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

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

于 2013-04-14T18:56:09.290 回答
11

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

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

项目依赖 - 依赖于“api”、“client”

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

项目依赖 - 依赖于“api”

希望这可以帮助。

于 2014-06-10T12:12:47.577 回答