====== LU06.A04 - Erstellen einer RESTful API für die ToDo-Liste mit Flask ======
Deine Aufgabe ist es, eine RESTful API mit Flask zu erstellen, um eine einfache ToDo-Liste zu verwalten. Du erhältst bereits implementierte Klassen für die ToDo-Elemente und die dazugehörige DAO-Klasse.
===== Kurzzusammenfassung =====
* Implementiere die Endpunkte für CRUD-Operationen (Create, Read, Update, Delete)
* Verwende JSON für den Datenaustausch
* Implementiere passende HTTP-Statuscodes
===== Vorgehen =====
==== 0. Vorbereitungen ====
- Akzeptiere das GitHub Classroom Assignment
- Klone dein persönliches Repository in die Entwicklungsumgebung
==== 1. Implementiere CRUD-Endpunkte ====
* Erstelle die folgenden REST-Endpunkte für die CRUD-Operationen. Diese sollten die Methoden der ''TodoDao''-Klasse verwenden.
- **POST** ''/todos'': Für das Hinzufügen eines neuen ToDo-Elements
- **GET** ''/todos'': Für das Abrufen aller ToDo-Elemente
- **GET** ''/todos/'': Für das Abrufen eines einzelnen ToDo-Elements nach ID
- **PUT** ''/todos/'': Für das Aktualisieren eines vorhandenen ToDo-Elements
- **DELETE** ''/todos/'': Für das Löschen eines ToDo-Elements
# Beispiel für einen Endpunkt zum Hinzufügen eines neuen ToDo-Elements
@app.route('/todos', methods=['POST'])
def add_todo():
# Dein Code hier
==== 2. Datenaustausch mit JSON ====
* Verwende JSON für den Datenaustausch zwischen Client und Server. Du kannst ''jsonify'' aus dem Flask-Paket verwenden, um Python-Objekte in JSON umzuwandeln.
==== 3. HTTP-Statuscodes ====
* Implementiere passende HTTP-Statuscodes für erfolgreiche und fehlerhafte Anfragen. Zum Beispiel:
- ''201 Created'' für erfolgreich erstellte Ressourcen
- ''404 Not Found'' wenn eine Ressource nicht gefunden wird
- ''400 Bad Request'' für ungültige Anfragen
==== 4. Teste deine API ====
Via ''API-Testing.http''-File im Workspace
oder via: [[https://app.getpostman.com/run-collection/21916156-7e24c1ab-b771-4f36-9bf9-9efda9b55507?action=collection%2Ffork&source=rip_markdown&collection-url=entityId%3D21916156-7e24c1ab-b771-4f36-9bf9-9efda9b55507%26entityType%3Dcollection%26workspaceId%3D6159a5bd-9101-4933-a6c3-05d2eb3112fd|{{https://run.pstmn.io/button.svg|Run in Postman}}]]
==== 5. Abgabe ====
Die Abgabe der Lösung erfolgt als Push in das persönliche GitHub-Repository.
----
//=> GitHub Repo für externe Besucher//
GitHub Repository https://github.com/templates-python/m323-lu06-a04-restful
//Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden//
[[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi