-
Notifications
You must be signed in to change notification settings - Fork 1
ProductController
Der ProductController repräsentiert die ProductRessource. Produkte können erstellt, bearbeitet und abgefragt werden (siehe Swagger).
Produkt Ressource:
{
"id": 1,
"name": "name",
"price": 100,
"sku": "0101100abc0001",
"createdAt": "2020-05-12T10:10:43",
"properties": [
{
"id": 1,
"name": "Name der Eigenschaft",
"value": "Wert z.B. gelb"
}
],
"categories": [
{
"id": 1,
"name": "Name der Kategorie"
}
],
"productsAtLocations": [
{
"locationId": 1,
"productId": 2,
"quantity": 150
}
]
}
Wichtig Properties eines Produktes:
-
properties
: ist eine Liste von Eigenschaften, mit einer Bezeichnung der Eigenschaft und dem Wert. (Farbe: gelb) -
categories
: ist eine Liste von Kategorien, welche das Produkt angehört, bestehend aus dem Namen der Kategorie. -
productsAtLocations
: repräsentiert eine Liste von Standorte bei dem das Produkt um die angegeben Anzahl (quantity) vorliegt.
Der ProductController sorgt für die Erstellung, Löschung und Entfernung von den oben genannten Properties falls diese dem Request beiliegen. Bsp.: Der Liste von categories
wird um eine Eintrag erweitert: der Controller stellt sicher, das es die Kategorie nun gibt und dem Produkt zugewiesen ist.
Endpoints:
Bei Änderungen an Ressourcen muss immer die ganze Ressource mitgeschickt werden, nicht nur einzelne Teile.
Für alle Controller gilt: Existiert ein Objekt schon, reicht die ID. Falls das Objekt verändert werden soll, sendet man die ID + alle Properties des Objektes. Soll ein Objekt erstellt werden, lässt man die ID null.
Spezialfall OrderController: Wenn ihr zu viel Properties dem Controller sendet, werden diese ignoriert, es löst keinen Fehler aus, so kann also direkt das Objekt welches von GET kommt bearbeitet und an PUT gesendet werden !