1.4 Herausforderungen - nReinhardt91/WBA2SS16KruschReinhardtKlein GitHub Wiki
Herausforderungen
Wir hatten zu beginn ziemliche Probleme, da wir zuerst eine andere Projektidee hatten, diese aber nicht die Anforderungen erfüllt hat. So musste man direkt zum Beginn umdenken und eine neue Idee suchen.
Als diese Hürde gemeistert war, wurde eine neue Idee erarbeitet und mit der Umsetzung begonnen. Während der Gespräche mit den Betreuern wurde uns nahegelegt unsere Ressourcen des Dienstgebers nochmals zu überarbeiten. Da wir an dem Punkt schon an der Umsetzung unseres Dienstgebers saßen, mussten wir viele Funktionen wieder umschreiben.
Probleme haben wir während unseres Dienstgebers mit der Umsetzung der Ressource Rezepte mit Zutatenliste gehabt. Da die Zutatenliste zu einem Rezept gehört, mussten beide Ressourcen zusammenhängen. Da wir Redis als Datenbank benutzt haben konnten wir beide Ressourcen nicht mit JOINS zusammenführen und mussten uns eine andere Lösung einfallen lassen. Des Weiteren tauchten auch bei der Implementierung des Dienstgebers bezüglich der Rezepte und deren Zutatenliste weitere Probleme auf, da bisher noch kein Ajax einbezogen wurde. Ein Rezept wird durch einen Klick auf einen Button angelegt, die URI wird erzeugt. Es war nicht möglich mit dem gleichen Formular auch eine POST Methode auf die Zutatenliste zu erzeugen, da diese die URI von dem Rezept benötigt. Daher haben wir hier eine Lösung über zwei Klicks.
Das größte Problem gab es jedoch wahrscheinlich mit dem POST in Formularen. Unser Request-Body wurde nicht an den Dienstgeber weitergegeben, sodass wir kein Rezept über die GUI hinzufügen konnten. Dieses Problem wurde erst mit dem Wechsel eines Modules gelöst.
Außerdem war uns nicht bekannt, dass Formular-Element nur die Methoden GET und POST unterstützt, was uns bei der Methode DELETE viel Zeit gekostet hat. Ebenso bei PUT funktioniert das mit einem Formular-Element nicht. Dazu haben wir dann auch AJAX eingebunden. Dieses findet man unter Einkaufslisten ansehen, eins auswählen und dort kann man asynchron Zutaten hinzufügen.