From 6377b6465b08b2d8beac857a0db40ec86fe778c2 Mon Sep 17 00:00:00 2001 From: Fabian Petersen Date: Fri, 27 May 2022 15:33:55 +0200 Subject: [PATCH] finished the Progress.md for the REST-API --- docs/Progress.md | 101 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 98 insertions(+), 3 deletions(-) diff --git a/docs/Progress.md b/docs/Progress.md index cdf05156..1ca440dc 100644 --- a/docs/Progress.md +++ b/docs/Progress.md @@ -60,8 +60,8 @@ Das Projekt ist verfügbar für die Endgeräte **Desktop, Android, Web**, mit ** ## Meileinstein 2 - bis 20.05.2022 - [x] Datenmodelle definieren - [x] Schnittstelle definieren -- [ ] REST API bauen - - [ ] REST API testen +- [x] REST API bauen + - [x] REST API testen - [ ] Fontend Design entwicklung starten - [ ] Dokumentation starten @@ -131,10 +131,105 @@ Zudem wurde die Möglichkeit geschaffen über die Config zu definieren, wie lang Zum Schluss wurde die token-Version dem User als neues Feld hinzugefügt, um zu überprüfen, ob der aktuelle Token noch gültig ist, den der User mitgeschickt hat. ### 24.04. +Es wurde die Klasse JWT-Service erstellt in die alle Funktion für JWT aus den Routen /login und /refresh_token verschoben wurden. +Zudem wurde eine neue Authentifizierung für Admins hinzugefügt. +### 25.04. +Es wurde das Plugin CallLogging zu Ktor hinzugefügt, um über das aktuelle Logging-System auch alle Anfragen an den Server sehen zu können. +Des Weiteren wurden weitere Endpunkte zum Registrieren eines Benutzers, zum Erhalten einer Liste aller Benutzer und zum ausloggen implementiert. + +### 26.04. +Es wurden weitere Endpunkte zum Bearbeiten und löschen von Benutzern erstellt. +Des Weiteren wurde eine openapi.yaml und openapi.json erstellt, welche die RESTApi beschreiben. +Zudem wurden der Endpunkt /openapi.json erstellt, der diese Datei bereitstellt, und /docs, welche ein HTML-Dokument mit der Swagger-UI zur Verfügung stellt. + +### 28.04. +Alle Endpunkte senden nun nur noch HTTP-Method 200(OK) mit einem möglichen Error in der Antwort oder 401(Unauthorized). + +### 02.05. +Nach einer Gruppenbesprechung wurde entschieden, das wir keinen Admin-Benutzer benötigen, dies wurde umgesetzt und alle Endpunkte, die nur Admin nutzen konnte, wurden entfernt. +Die Routen für docs wurden in eine eigene Datei gepackt. + +### 06.05. +Die Datenbank-Modelle wurden auf Basis des UML-Diagramms erstellt. +Zudem wurden die dazugehörigen DTOs erstellt und die Definition dieser in die openapi.json hinzugefügt. +Jeder User erhält beim Registrieren eine UserCategory, welche im Frontend als "Keine Kategorie" angezeigt werden soll. +Diese Kategorie kann nicht verändert oder gelöscht werden und alle Entries werden dieser Kategorie hinzugefügt, wenn keine spezielle angegeben wurde. +Für CORS wurde die Möglichkeit hinzugefügt, mehrere Frontend-Adressen anzugeben. + +### 07.05. +Es wurde ein neuer Endpunkt /favicon.ico erstellt, welcher unser neues icon zurückgibt. + +### 09.05. +Die Eltern-Kind-Beziehung der Kategorien und Einträge wurde implementiert und bei der Erstellung der DTOs berücksichtigt. +Es wurde die Möglichkeit hinzugefügt, den Server über https erreichbar zu machen. +Das XForwardHeaderSupport Plugin wurde hinzugefügt, um https-cookies über einen reverse-Proxy zu verschicken. + +### 11.05. +Das Package CliKt wurde hinzugefügt, um Programm-Parameter zu parsen. +Dies wird genutzt, um eine configFile beim start zu übergeben. +Es wurde eine Config- und eine ConfigIntermediate-Klasse erstellt. +Das Package Hoplite wurde hinzugefügt, um eine Yaml-Datei in eine DataClass umzuwandeln in diesem Fall die ConfigIntermediate-Klasse. +Die ENV-Variablen werden auch zur ConfigIntermediate-Klasse umgewandelt und anschließend daraus eine Config erstellt. + +### 12.05. +Beim start wird nun die Config erstellt und an das mainModule weitergegeben und von dort durch Kodein für alle zur Verfügung gestellt. +Das Logging wurde verbessert, indem die logback.xml angepasst wurde. + +### 13.05. +Es wurde eine neue Abstraktionsebene erschaffen, die eine Alternative zur Datenbankanbindung ermöglicht. +Dazu wurden Interfaces erstellt und die derzeitige Implementation an diese angepasst. +Zudem wurde eine Basis-Implementation der Entries und Categories erstellt, die dann inkrementell verbessert wird. + +### 17.05. +Es wurde eine erste Version der Versionierung von Entries und Categories implementiert. +Alte Kategorien und Einträge können nicht mehr verändert oder gelöscht werden. +Die Query-Parameter current und period werden nun nicht mehr ignoriert, sondern es werden nur noch Kategorien und Einträge gesendet, die in der angegebenen Periode sind. +Einträge werden in die richtige Kategorie gepackt, wenn die vorherige Kategorie verändert wird. + +### 19.05. +Es wurde versucht ein eigenes Plugin zu entwickeln bis aufgefallen ist, das ein bereits vorhandenes Plugin dies bereits unterstützt. +Das Plugin StatusPages wurde dafür genutzt bei 401 auch ein Objekt mit einer Error-Message zu verschicken. + +### 23.05. +/logout schickt nun auch eine APIResponse, wobei nun jede Anfrage an den Server auf die eine Antwort mit 200 oder 401 folgt, eine APIResponse erhält. +Logging wird jetzt auch zu einer Datei hinzugefügt und nicht mehr nur auf StdOut. +Es wurde von der Ktor version 1.6.8 auf ktor version 2.0.1 migriert. + +### 25.05. +die openapi.json und openapi.yaml wurden auf den neuesten Stand gebracht. +die Endpunkte /openapi.json und favicon.ico wurde durch ein static-folder ersetzt. +In diesem Ordner werden alle Dateien automatisch zur Verfügung gestellt. +Dies wird zudem genutzt, um den JS-Client über den Server zur Verfügung zu stellen. +Zudem wurden die Dockerfiles angepasst, um zusätzlich den JS-Client dem Server hinzuzufügen. + +### 27.05. +die frontend-Adressen werden nun in der Config als Array angegeben und nicht nur als String. +die Readme wurde auf den neuesten Stand gebracht. #### REST API Testen -**Ziel:** +**Ziel:** Für alle Endpunkte der REST-Api Tests schreiben, um die Richtigkeit der Implementation zu testen. + +### 12.05. +Die Basis für alle kommenden Tests geschaffen und der erste funktionierende Test erstellt. + +### 17.05. +Ein Test wurde erstellt, um /login und /logout zu testen + +### 18.05. +Es wurde eine logback-test.xml erstellt, um das logging bei tests zu deaktivieren. +Ein neuer Test zum Überprüfen der User-Endpunkte wurde erstellt. +Der Anfang für Kategorie Tests wurde erstellt. + +### 19.05. +Die Tests für alle Kategorien und Kategorie für die gegebene ID wurden hinzugefügt. +Des Weiteren wurden nicht implementierte Tests für die Einträge hinzugefügt. + +### 20.05. und 21.05. +Es wurden die restlichen Tests hinzugefügt, um alle eigenarten bezüglich der Versionierung zu testen und Fehler abzufangen. + +### 23.05. +alle tests wurden von ktor version 1.6.8 auf 2.0.1 migriert ### Frontend Design entwicklung starten **Ziel:**