Prendiamo un esempio classico di impresa: Order
e OrderItem
public class Order
{
public Guid Id { get; set; }
public ICollection<OrderItem> Items { get; set; }
}
public class OrderItem
{
public Guid Id { get; set; }
//...
}
Ora, qual è il modo più ragionevole per aggiornare gli articoli dell'ordine utilizzando PUT
o PATCH
(Patch JSON)?
Dovrei PUT api/orders/{id}
con una nuova collezione (con elementi rimossi, aggiunti o aggiornati) o gestirla in modo diverso in qualche modo? Ad esempio, invece di restituire una raccolta serializzata di elementi, l'elenco di resi o i collegamenti per ciascun elemento come: api/orders/{id}/items/{id}
. Quindi sarebbe più HATEOAS come e REST come ...
public class Order
{
public Guid Id { get; set; }
public ICollection<Link> Items { get; set; }
}
Quindi se volessi aggiornare o rimuovere alcuni elementi dall'ordine userei quei link, ma il lato negativo di questo è che l'implementazione lato client non sarà così semplice.
L'altra soluzione a cui riesco a pensare è restituire id di elementi come:
public class Order
{
public Guid Id { get; set; }
public ICollection<Guid> Items { get; set; }
}
ma non sembra troppo bello per me, quindi qual è più o meno lo standard del settore per affrontare questo?
- Restituzione di elementi incorporati
- Restituzione degli URL degli articoli
- Restituzione degli ID oggetto