我正在学习使用Dropwizard。我能够遵循快速入门指南并运行基本的REST API。
在此documentation中,有一个名为“组织项目”的部分。
它建议您按以下部分组织项目:project-api,project-client,project-service。
以下是我的问题/疑问:
一般来说,请说明'api','service'和'client'之间的区别。
是否有使用dropwizard严格遵循上述惯例的示例?
“...项目客户端应该使用这些类和HTTP客户端为您的服务实现一个成熟的客户端” - 因为“项目服务”将具有REST API,那么为什么呢我们需要使用HTTP Client吗?
谢谢!
答案 0 :(得分:20)
Dropwizard建议您遵循以下项目结构:
{project_name}(即包含以下模块的父级)
您可能会发现this示例有用,即使客户端部分为空。
如第1点中客户端的简短描述中所述,如果您的项目有任何外部休息服务调用,那么相关(HTTP)客户端代码应该进入客户端模块。否则排除模块本身。
答案 1 :(得分:10)
1) api - 就像名称一样,它是在项目中定义为Representations(Pojo -Json / Xml)的接口/契约。这些模型定义了您的API合同,可以与使用您的API的不同项目共享。
2)服务 - 实际的业务逻辑和持久性。表示不必与您的Entity对象(域对象)相同。这会以更清晰的方式拆分您的域和表示。域逻辑将不再与您的表示耦合。虽然这会在对象结构方面造成重大的重复。
项目依赖 - 取决于“api”,“客户”
3)客户端 - 使用HttpClient或Jersey Client通过HTTP调用调用其他Web服务的Http客户端包装器。为合同编写(最终用户)测试。
项目依赖 - 取决于“api”
希望这有帮助。