0

Exemple: un objet Order (agrégat root) possède une collection d'objets OrderLine (entités enfants). Quelle est l'URL ajouter une ligne de commande à une commande? Prenez en considération la différence entre l'utilisation du contrôleur de racines agrégées et la présence d'un contrôleur séparé pour l'entité enfant.Quelle est l'URL préférée pour ajouter une entité qui n'est pas une racine agrégée?

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

ou

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

Merci!

Répondre

1

Suivez votre modèle de domaine.

Un objet Orderline existe-t-il et des actions peuvent-elles être effectuées avec celui-ci? (Pas d'objet dans le code, objet dans la vie réelle selon le domaine.) Très probablement pas, ou ce serait la racine agrégée.

L'objet Order existe et vous y ajoutez une Orderline. Donc l'objet racine est l'Ordre, avec l'action d'ajouter une Orderline.

Votre route d'URL suivrait cela, avec un contrôleur pour l'objet, et une action d'ajouter une ligne de commande.

De vos exemples ceci est celui qui suit cette logique:

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

Une ligne de commande peut-elle exister indépendamment d'une commande? Probablement pas, donc, je voudrais faire une action sur le contrôleur de commande.

je préférerais les suivantes:

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

ou même si addproduct ne peut exister un produit sur une ligne dans un ordre. On peut supposer que cela donnerait une vue de l'ensemble de la commande en cas de succès, ce qui est une autre raison de l'avoir sur le contrôleur de commande.

Questions connexes