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

时间:2013-04-12 17:16:52

标签: java http rest dropwizard

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

在此documentation中,有一个名为“组织项目”的部分。

它建议您按以下部分组织项目:project-api,project-client,project-service。

以下是我的问题/疑问:

  1. 一般来说,请说明'api','service'和'client'之间的区别。

  2. 是否有使用dropwizard严格遵循上述惯例的示例?

  3. “...项目客户端应该使用这些类和HTTP客户端为您的服务实现一个成熟的客户端” - 因为“项目服务”将具有REST API,那么为什么呢我们需要使用HTTP Client吗?

  4. 谢谢!

2 个答案:

答案 0 :(得分:20)

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

    {project_name}(即包含以下模块的父级)

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

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

答案 1 :(得分:10)

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

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

项目依赖 - 取决于“api”,“客户”

3)客户端 - 使用HttpClient或Jersey Client通过HTTP调用调用其他Web服务的Http客户端包装器。为合同编写(最终用户)测试。

项目依赖 - 取决于“api”

希望这有帮助。