0

示例:Order 对象(聚合根)具有 OrderLine 对象(子实体)的集合。将 OrderLine 添加到订单的 URL 是什么?考虑使用聚合根的控制器和为子实体使用单独的控制器之间的区别。

1:http ://example.com/orders/add-orderline?order-id=42&product-id=12&quantity=2

或者

2:http ://example.com/order-lines/add?order-id=42&product-id=12&quantity=2

谢谢!

4

2 回答 2

1

订单行能否独立于订单而存在?可能不会,因此,我会在订单控制器上执行操作。

我更喜欢以下内容:

http://example.com/orders/addline?order-id=42&product-id=12&quantity=2

或者即使addproduct一个产品在一个订单中只能存在于一条线上。

据推测,这将在成功时呈现整个订单的视图,这是将其放在订单控制器上的另一个原因。

于 2008-12-10T15:22:54.990 回答
1

遵循您的域模型。

是否存在 Orderline 对象,是否可以对其执行操作?(根据领域,不是代码中的对象,而是现实生活中的对象。)很可能不是,或者它将是聚合根。

Order 对象存在,并且您正在向其添加 Orderline。因此,根对象是 Order,具有添加 Orderline 的操作。

您的 URL 路由将遵循这一点,带有对象的控制器和添加 Orderline 的操作。

从您的示例中,这是遵循该逻辑的示例:

http://example.com/orders/add-orderline?order-id=42&product-id=12&quantity=2
于 2008-12-10T15:33:45.467 回答