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

Sun*_*Sun 16 java rest http dropwizard

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

在本文档中,有一个名为"组织项目"的部分.

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

这是我的问题/疑问:

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

  2. 是否有一个例子严格遵循上述惯例使用dropwizard?

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

谢谢!

San*_*y T 20

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

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

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

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


Dar*_*ght 11

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

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

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

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

项目依赖 - 取决于"api"

希望这可以帮助.