java - 我是否应该为依赖实体提供单独的休息 Controller

标签 java rest

我的 Spring Boot 应用程序中有两个实体:DealerCar

如果没有经销商的拥有,汽车就无法生存。

现在,我有两组端点(即两个 Controller 类):DealerControllerCarController

DealerController 处理 Dealer 实体的 CRUD 操作。 CarController 处理 Car 实体的 UPDATEDELETEREAD 操作。

我的问题是关于 CarCREATE 操作。端点接收 Dealer 的 ID,POST 请求正文将是 Car 信息。

我应该将其放在 DealerControllerCarController 下吗?

最佳答案

两个 Controller 都应该存在,因为它们将用于特定操作。

DealerController 将负责,

  • 添加新经销商/经销商 - POST
  • 更新经销商详细信息/dealers/2 - PUT
  • 获取经销商列表 -/dealers - GET
  • 获取特定经销商/dealers/2 的详细信息 - GET
  • 删除经销商 -/dealers/2 - DELETE
  • 等等

CarController 将负责,

  • 添加新车/汽车 - POST
  • 更新汽车详细信息 -/cars/1 - PUT
  • 获取所有汽车/汽车的列表 - GET
  • 获取经销商所有汽车的列表/cars?dealerId=2/GET
  • 获取特定汽车/cars/1 的详细信息 - GET
  • 删除汽车 -/cars/1 - DELETE
  • 等等

如果您严格遵守 RESTful 约定,您的 CarController 端点不应包含 DealerId。添加新车时,请求正文应包含汽车属性和 DealerId 的 JSON 表示形式,因为每辆车只能有一个 DealerId

例如

{
    "dealerId": 2,
    "manufacturer": "bmw",
    "color": "white",
    "model": "320d"
}

因此,汽车的模型类应该将 DealerId 或 Dealer 对象作为其属性,具体取决于您想要多少详细信息。

关于java - 我是否应该为依赖实体提供单独的休息 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45931949/

相关文章:

java - 如何在 Selenium 自动化测试中管理 Gmail 中 COMPOSE 按钮的动态 ID

java - 如何修复 “error: cannot find symbol”

mysql - 如何将我的 MEAN 应用程序转换为使用 mySQL

rest - 使用 Gorilla Mux 端点通过 HTTP 流式传输数据

wcf - 带有 rest 和 soap 端点的真实世界示例 wcf

java - 如何使用 Eclipse 在 CVS HEAD 中正确回滚到旧版本?

java - 如何使用 Java 对字符串进行排序

java - Spring Rest JSON 绑定(bind)

ruby-on-rails - Rails,在尝试使用 put http 方法的表单中出现问题

java - MySQL 和 JDBC 与 rewriteBatchedStatements=true