RestController - THM-ATLAS/spring-backend Wiki

Überblick

Erstellen

Ein RestController ist eine Klasse welche mit der Annotation @RestController angegeben wird. RestControllern wird ein Service übergeben, welcher sich um die Verarbeitung der Daten befasst.

Path

src/main/kotlin/com/example/atlasbackend/controller

Mapping

In unseren RestControllern Mappen wir unsere Restful API. Allen RestControllern wird die Annotation @RequestMapping("/api/") zugewiesen.

Für jede unsere Hauptrouten erstellen wir einen Controller, welcher sich mit dieser Route befasst.

Innerhalb der RestController wird Funktionen über Annotations eine Route zugewiesen :

  • @GetMapping(/route/...)
  • @PostMapping(/route/...)
  • @PutMapping(/route/...)
  • @DeleteMapping(/route/...)

Funktionen

In den Funktionen werden die Daten der Request an die Services weitergegeben.

In den Argumenten der Funktion kann man mit der Annotation @RequestBody den body der Request übergeben und mit @PathVariable die Pfadvariable übergeben.

Security

Um überprüfen zu können, welche Rechte der Nutzer hat, der gerade eine Request gesendet hat, muss in jeder Funktion der principal / user übergeben werden, dies erfolgt über die Annotation @AuthenticationPrincipal user : AtlasUser.

API Documentation

In den RestControllern wird außerdem die API Documentation für die einzelnen Routen angepasst.

Unsere RestController

FrontendController

Der FrontendController sorgt dafür, dass Requests, zu denen kein anderer RESTController existiert, ans Frontend weitergeleitet werden:

ExerciseController

Der ExerciseController befasst sich mit den Aufgaben und Aufgabentypen.

Path

src/main/kotlin/com/example/atlasbackend/controller/ExerciseController.kt

Aufgaben

Es können Aufgaben zurückgegeben, erstellt, bearbeitet und gelöscht werden:

  • GET /exercises gibt alle Aufgaben zurück.
  • GET /exercises/{exerciseID} gibt die Aufgabe mit ID rurück.
  • GET /exercises/user/{userID} gibt alle Aufgaben auf die ein User Zugriff hat zurück.
  • GET /exercises/module/{modID} gibt alle Aufgaben zurück die einem Modul angehören.
  • POST /exercises erstellt die Aufgabe aus dem Requestbody.
  • PUT /exercises bearbeitet die Aufgabe im Requestbody.
  • DELETE /exercises/{exerciseID} löscht aufgaben mit ID.

Aufgaben-Typen

Es können Aufgabentypen angefragt werden:

  • GET /exercises/types gibt alle Typen von Ausgaben zurück

ModuleController

Der ModuleController befasst sich mit Modulen und Modulmitgliedschaften.

Path

src/main/kotlin/com/example/atlasbackend/controller/ModuleController.kt

Module

Es können Module zurückgegeben, erstellt, bearbeitet und gelöscht werden:

  • GET /modules gibt alle Module zurück.
  • GET /modules/{moduleID} gibt Modul mit angefragter ID zurück.
  • POST /modules erstellt das Modul aus dem Requestbody.
  • PUT /modules bearbeitet das Modul in dem Requestbody.
  • DELETE /modules/{moduleID} löscht Modul mit ID.

Modulmitgliedschaften

Es können Modulemitgliedschaften zurückgegeben, erstellt, bearbeitet und gelöscht werden:

  • GET /modules/users/{moduleID} gibt alle User zurück die Mitglied in einem Modul sind.
  • POST /modules/users/{moduleID} fügt ModuleUser aus RequestBody zu Modul mit ID hinzu.
  • POST modules/users/multiple/{moduleID} fügt mehrere ModuleUser aus RequestBody zu Modul mit ID hinzu.
  • PUT /modules/users/{moduleID} bearbeitet ModuleUser im Modul mit ID.
  • DELETE /modules/users/{moduleID}/{userID} entfernt ModuleUser aus Modul.
  • DELETE /modules/users/{moduleID} entfernt alle ModuleUser aus RequestBody aus Modul mit ID.

NotificationController

Der NotificationController befasst sich mit Benachrichtigungen und Typen von Benachrichtigungen.

Path

src/main/kotlin/com/example/atlasbackend/controller/NotificationController.kt

Notifications

  • GET notifications/user/{userID} gibt alle Benachrichtigungen eines Users zurück.
  • GET notifications/module/{moduleID} gibt alle Benachrichtigungen eines Moduls zurück.
  • POST notifications erstellt eine Benachrichtigung die an alle Nutzer gesendet wird.
  • POST notifications/module erstellt eine Benachrichtigung die an aller Mitglieder eines Moduls gesendet wird.
  • DELETE notifications/user/{notificationID}/{userID} löscht eine Benachrichtigung eines Nutzers
  • DELETE notifications/user/{userID} löscht alle Benachrichtigungen eines Nutzers
  • DELETE notifications/module/{notificationID}/{moduleID} löscht für alle eine Benachrichtigung eines Moduls
  • DELETE notifications/{notificationID} löscht eine Benachrichtigung für alle

NotificationType

  • GET notifications/types gibt alle Typen von Benachrichtigungen zurück

RatingController

Der RatingController befasst sich mit Bewertungen von Aufgaben.

Path

src/main/kotlin/com/example/atlasbackend/controller/RatingController.kt

Bewertungen

Es können Bewertungen zurückgegeben, erstellt, bearbeitet und gelöscht werden:

  • GET /ratings/exercises/{exerciseID} gibt alle Bewertungen einer Aufgabe zurück.
  • GET /ratings/users/{userID} gibt alle Bewertungen eines Nutzers zurück.
  • GET /ratings/{ratingID} gibt Bewertung mit ID zurück.
  • PUT /ratings bearbeitet Bewertung im Requestbody.
  • POST /ratings erstellt Bewertung aus Requestbody.
  • DELETE /ratings/{ratingID} löscht Bewertung mit ID.

RoleController

Der RoleController befasst sich mit Rollen

Path

src/main/kotlin/com/example/atlasbackend/controller/RoleController.kt

Rollen

Rollen können zurückgegeben werden:

  • GET /roles gibt alle Rollen zurück.

SettingsController

Der SettingsController befasst sich mit Einstellungen von Nutzern.

Path

src/main/kotlin/com/example/atlasbackend/controller/SettingsController.kt

Einstellungen

Rollen können zurückgegeben und erstellt werden:

  • GET /settings/{userID} gibt Einstellungen eines Nutzers zurück.
  • PUT /settings bearbeitet Einstellungen aus Requestbody.

SubmissionController

Der SubmissionController befasst sich mit Abgaben

Path

src/main/kotlin/com/example/atlasbackend/controller/SubmissionController.kt

Abgaben

Es können Abgaben zurückgegeben, erstellt, bearbeitet und gelöscht werden:

  • GET /submissions gibt alle Abgaben zurück.
  • GET /exercises/{exerciseID}/submissions gibt alle Abgaben zu einer Aufgabe zurück.
  • GET /users/{userID}/submissions gibt alle Abgaben eines Nutzers zurück.
  • GET /exercises/{exerciseID}/submissions/{submissionID} gibt Abgabe mit IDs zurück.
  • PUT /submissions bearbeitet Abgabe in Requestbody.
  • PUT /submissions/grade bearbeitet Bewertung einer Abgabe in Requestbody.
  • POST /submissions erstellt Abgabe aus Requestbody.
  • DELETE /submissions/{submissionID} löscht Abgabe mit ID.

TagController

Der TagController befasst sich mit Aufgabentags

Path

src/main/kotlin/com/example/atlasbackend/controller/TagController.kt

Tags

Es können Tags zurückgegeben, erstellt, bearbeitet und gelöscht werden:

  • GET /tags gibt alle Tags zurück.
  • GET /exercises/{exerciseID}/tags gibt alle Tags einer Aufgabe zurück.
  • PUT /tags bearbeitet Tag in Requestbody.
  • POST /tags erstell Tag aus Requestbody.
  • POST /exercises/{exerciseID}/{tagID} fügt Tag einer Aufgabe hinzu.
  • Delete /tags/{tagID} löscht Tag mit ID.
  • DELETE /exercises/{exerciseID}/{tagID} entfernt Tag von Aufgabe

UserController

Der UserController befasst sich mit Nutzern

Path

src/main/kotlin/com/example/atlasbackend/controller/UserController.kt

Nutzer

Es können Tags zurückgegeben, erstellt, bearbeitet und gelöscht werden:

  • GET /users gibt alle Nutzer zurück.
  • GET /users/me gibt eingeloggten Nutzer zurück.
  • GET /users/{id} gibt Nutzer mit ID zurück.
  • PUT /users bearbeitet Nutzer in Requestbody.
  • POST /users erstellt Nutzer aus Requestbody.
  • POST /users/multiple erstellt mehrere Nutzer aus Requestbody.
  • DELETE /users/{id} löscht Nutzer mit ID.
  • DELETE /users/multiple löscht Nutzer aus Requestbody