-
Notifications
You must be signed in to change notification settings - Fork 0
Backend API
Diese Dokumentation beschreibt die Schritte zum lokalen Starten der Spring Boot API mit Docker Compose und der Konfiguration der Umgebungsvariablen. Es wurde zudem eine Swagger Dokumentation aufgesetzt, welche ein UI zum Testen der Endpunkte zur Verfügung stellt. Das UI lässt sich lokal unter http://localhost:8080/documentation öffnen. Das Swagger yaml-file unter http://localhost:8080/documentation/docs.
- Docker ist auf dem lokalen System installiert und läuft.
- Eine .env-Datei mit den erforderlichen Umgebungsvariablen.
DB_URL=jdbc:postgresql://localhost:5432/postgres
DB_USERNAME=postgres
DB_PASSWORD=uk<t58w3nsV_.S)
ACCESS_TOKEN_SECRET=Akd(dj3!kdcNml/ws)!
REFRESH_TOKEN_SECRET=Ldoge(skM(2!asScaeF?
TOKEN_ISSUER=StudentTimer
ACCESS_TOKEN_EXPIRATION=86400000
REFRESH_TOKEN_EXPIRATION=7776000000
GOOGLE_CLIENT_ID=698641812741-rdmgr3i2le79rgnjk57qpkj1of1hvdho.apps.googleusercontent.comStelle sicher, dass die .env-Datei im gleichen Verzeichnis wie die compose.yml liegt.
Führe den folgenden Befehl im Terminal im Verzeichnis der docker-compose.yml-Datei aus:
docker-compose up
Dadurch werden die Container für die PostgreSQL-Datenbank und die Spring Boot-Anwendung gestartet.
Verwende den Befehl docker ps -a, um sicherzustellen, dass die Container erfolgreich gestartet wurden und laufen.
db Service: Verwendet das PostgreSQL-Image und definiert das Datenbank-Passwort über die Umgebungsvariable POSTGRES_PASSWORD. Ist über Port 5432 erreichbar.
app Service:
Baut das Spring Boot-Image gemäß dem Dockerfile und setzt Umgebungsvariablen für die Datenbank- und JWT-Konfiguration.
Exponiert die Anwendung über Port 8080.
.env-Datei: Die .env-Datei enthält sensible Informationen und Umgebungsvariablen für die Anwendung.
application.properties: Die application.properties-Datei konfiguriert die Datenbankverbindung und andere Anwendungsvariablen für die Spring Boot-Anwendung. Hier findet man auch die Konfiguration der Swagger Pfade.
Die Anwendung und die Datenbank sind auf render.com gehostet. Die Anwendung läuft in einem Docker Container und ist unter https://student-timer-backend.onrender.com. Render.com ist mit der "backend-production" Branch von Github synchronisiert.
Es wurde eine Swagger Dokumentation aufgesetzt, welche ein UI zum Testen der Endpunkte zur Verfügung stellt. Das UI lässt sich lokal unter Swagger Dokumentation öffnen. Das Swagger yaml-file unter https://student-timer-backend.onrender.com/documentation/docs. Sowohl die Datenbank als auch die Anwendung wird bei Inaktivität heruntergefahren. Es kann also zu Fehlern führen, wenn man das Backend länger nicht angesprochen wurde.
Es müssen folgende Umgebungsvariablen in render gesetzt werden:
DB_URL=jdbc:postgresql://dpg-clq5ji2e9h4c73aii70g-a:5432/db_jfnf
DB_USERNAME=admin
DB_PASSWORD=YiO9y2i3aooO7bjBmDacxshu42Xk84G4
ACCESS_TOKEN_SECRET=Akd(dj3!kdcNml/ws)!
REFRESH_TOKEN_SECRET=Ldoge(skM(2!asScaeF?
TOKEN_ISSUER=StudentTimer
ACCESS_TOKEN_EXPIRATION=86400000
REFRESH_TOKEN_EXPIRATION=7776000000
GOOGLE_CLIENT_ID=698641812741-vp91l41gmncosha4m973idpbmp13vk8v.apps.googleusercontent.comHost=dpg-clq5ji2e9h4c73aii70g-a.frankfurt-postgres.render.com
Datenbank=db_jfnf
Benutzername=admin
Passwort=YiO9y2i3aooO7bjBmDacxshu42Xk84G4
Port:5432
| Methode | Pfad | Beschreibung |
|---|---|---|
| GET | /students/{studentId} |
Ruft einen Studenten ab |
| PUT | /students/{studentId} |
Aktualisiert Studentendaten |
| DELETE | /students/{studentId} |
Löscht einen Studenten |
| Methode | Pfad | Beschreibung |
|---|---|---|
| GET | /students/{studentId}/modules |
Ruft alle Module eines Studenten ab |
| GET | /students/{studentId}/modules/{id} |
Ruft ein Modul eines Studenten ab |
| POST | /students/{studentId}/modules |
Erstellt ein neues Modul |
| PUT | /students/{studentId}/modules/{id} |
Aktualisiert Moduldaten |
| DELETE | /students/{studentId}/modules/{id} |
Löscht ein Modul |
| Methode | Pfad | Beschreibung |
|---|---|---|
| GET | /students/{studentId}/modules/{moduleId}/learningUnits |
Ruft alle Lerneinheiten eines Moduls ab |
| GET | /students/{studentId}/modules/{moduleId}/learningUnits/{learningUnitId} |
Ruft eine Lerneinheit eines Moduls ab |
| POST | /students/{studentId}/modules/{moduleId}/learningUnits |
Erstellt eine neue Lerneinheit |
| PUT | /students/{studentId}/modules/{moduleId}/learningUnits/{learningUnitId} |
Aktualisiert Lerneinheitendaten |
| DELETE | /students/{studentId}/modules/{moduleId}/learningUnits/{learningUnitId} |
Löscht eine Lerneinheit |
| Methode | Pfad | Beschreibung |
|---|---|---|
| GET | /students/{studentId}/modules/{moduleId}/learningSessions |
Ruft alle Lernsessions eines Moduls ab |
| GET | /students/{studentId}/modules/{moduleId}/learningSessions/{learningSessionId} |
Ruft eine Lernsession eines Moduls ab |
| POST | /students/{studentId}/modules/{moduleId}/learningSessions |
Erstellt eine neue Lernsession |
| PUT | /students/{studentId}/modules/{moduleId}/learningSessions/{learningSessionId} |
Aktualisiert Lernsessionendaten |
| DELETE | /students/{studentId}/modules/{moduleId}/learningSessions/{learningSessionId} |
Löscht eine Lernsession |
| Methode | Pfad | Beschreibung |
|---|---|---|
| POST | /auth/login |
Führt die Anmeldung eines Studenten durch |
| POST | /auth/refreshToken |
Erstellt ein neues Zugriffstoken mittels Refresh-Token |
| POST | /auth/verifyAccessToken |
Validiert ein Zugriffstoken (nur für Testzwecke) |
| POST | /auth/verifyRefreshToken |
Validiert ein Refresh-Token (nur für Testzwecke) |
| POST | /auth/signUp |
Erstellt einen neuen Studenten im System |