0

Пример: объект Order (совокупный корень) имеет коллекцию объектов OrderLine (дочерние сущности). Какой URL-адрес добавляет 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

Спасибо!

ответ

1

Следуйте своей модели домена.

Существует ли объект Orderline, и могут ли быть предприняты действия с ним? (Не объект в коде, объект в реальной жизни в соответствии с доменом.) Скорее всего, нет, или это будет совокупный корень.

Объект Order существует, и вы добавляете к нему заказ. Таким образом, корневой объект - это Заказ, с действием добавления Orderline.

Ваш URL-маршрут будет следовать за ним, с контроллером для объекта и действием добавления строки заказа.

Из ваших примеров этого является тот, который следует, что логика:

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

Может ли заказная линия существовать независимо от заказа? Наверное, поэтому я не буду действовать на контроллере заказа.

Я предпочел бы следующее:

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

или даже addproduct если продукт может существовать только на одной линии в порядке.

Предположительно, это обеспечило бы представление обо всем успешном заказе, что является еще одной причиной его наличия на контроллере заказа.

Смежные вопросы