Какой предпочтительный URL-адрес для добавления объекта, который не является совокупным корнем? - PullRequest
0 голосов
/ 10 декабря 2008

Пример: объект Order (агрегатный корень) имеет коллекцию объектов OrderLine (дочерних объектов). Какой URL добавить OrderLine к заказу? Учтите разницу между использованием контроллера агрегатных корней и наличием отдельного контроллера для дочерней сущности.

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

Спасибо!

Ответы [ 2 ]

1 голос
/ 10 декабря 2008

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

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

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

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

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

http://example.com/orders/add-orderline?order-id=42&product-id=12&quantity=2
1 голос
/ 10 декабря 2008

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...