====== LU03.A01 - Bibliothek ====== Erstelle eine Webapplikation mit Services zur Verwaltung von Büchern in einer Bibliothek. **[[https://classroom.github.com/a/2PJharue|GitHub Classroom Assignment]]** ===== Aufbau der Applikation ===== In der Applikation sind die Klassen und Methoden für das Lesen und Schreiben der Bücher bereits umgesetzt. ==== Datei "app.py" ==== Die zentrale Datei zur Definition der Ressourcen und Pfade. ==== Ordner "model" ==== Hier sind die Datenklassen für ''Library'' und ''Book'' umgesetzt. ==== Ordner "files" ==== In diesem Ordner sind in der Datei ''books.json'' einige Bücher als JSON-Struktur gespeichert. Die Datei ''books.bak.json'' dient als Backup. Du kannst bei Bedarf den Inhalt dieser Datei kopieren und in ''books.json'' einfügen. ==== Ordner "resource" ==== In diesem Ordner erstellst du deine Klassen mit den Ressourcen und Services. ===== Vorbereitung ===== - Akzeptiere das Assignment im GitHub Classroom. - Klone das Repository in deine IDE. - (//PyCharm//) Erstelle eine Runtime Configuration für den Flask Server. ===== Aufträge ===== Deine Aufgabe ist es, die Ressourcen, Pfade und Services zu definieren und umzusetzen. Für jeden Service ist das Vorgehen gleich: - Lege die URI für die Ressource fest. - Lege fest, mit welcher HTTP-Methode der Service aufgerufen wird. - Lege den Inhalt der Response des Services fest: - Welche Daten und deren Format. - Welche HTTP-Statuscodes. - Falls noch nicht vorhanden, erstelle die Klasse für diese Ressource im Ordner ''resource''. - Realisiere die Methode für den Service. - Teste den Service mit Hilfe von Postman und/oder dem Webbrowser. ==== Bücherliste ==== Dieser Service liefert ein JSON-Array mit allen Buch-Objekten. Die Methode liest die Bücherliste aus der Library-Klasse. Die Bücherliste wird als Response an den Aufrufer gesendet. ==== Buch lesen ==== Dieser Service liefert eine einzelnes Buch als JSON-Objekt. Die Methode holt anhand der UUID ein Buch aus der Library-Klasse. Falls es gefunden wurde, wird das Buch in der Response an den Aufrufer gesendet. ==== Buch einfügen ==== Dieser Service fügt die Daten eines neuen Buchs in die Bücherliste der Library-Klasse ein. In der Response wird die UUID des neuen Buchs mitgegeben. Die Methode parst die Formular-Parameter aus dem Request ein. Diese Parameter müssen vorgängig definiert werden. Es wird ein neues Buch-Objekt erstellt und eine neue UUID erzeugt. Die Formulardaten werden in das Buch-Objekt gespeichert. Zuletzt wird das Buch-Objekt am Ende der Bücherliste eingefügt und gespeichert. ==== Buch ändern ==== Dieser Service ändert die Daten eines bestehenden Buchs in der Bücherliste der Library-Klasse ein. Die Methode holt anhand der UUID ein Buch aus der Library-Klasse. Falls es gefunden wurde, werden die Formular-Parameter aus dem Request geparst und in das Objekt gespeichert. Zuletzt wird die Bücherliste gespeichert. ==== Buch löschen ==== Ein weiterer Service ist für das Löschen von Büchern zuständig. Die Methode holt anhand der UUID ein Buch aus der Library-Klasse. Falls es gefunden wurde, wird das Buch aus der Bücherliste gelöscht. Zuletzt wird die Bücherliste gespeichert. ---- {{tag>M321-LU03}} [[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] Marcel Suter