|
|
Die REST-API wird im [OpenAPI 3](http://spec.openapis.org/oas/v3.0.3) Format spezifiziert.
|
|
|
|
|
|
Die Spezifikation kann unter https://git.thm.de/swtp-feedback-app/api-docs/-/blob/master/openapi.yaml gefunden werden.
|
|
|
|
|
|
## Aufbau
|
|
|
|
|
|
Die API ist in 7 Abschnitte unterteilt: auth, quiz, question, session, course, user und chart. Diese Abschnitte werden in der Spezifikation als Tags zur Strukturierung verwendet und die Controller in der Backend-Implementierung sind auch nach ihnen unterteilt:
|
|
|
|
|
|
* **auth:** Enthält die Authentifizierungs Routen zum Ein- und Ausloggen
|
|
|
* **quiz:** Enthält die CRUD-Operationen für die Quiz Ressourcen
|
|
|
* **question:** Enthält die CRUD-Operationen für die Question Ressourcen
|
|
|
* **session:** Enthält die CRUD-Operationen für die Session Ressourcen wie Operationen wie das Abgeben von Antworten zu Fragen und das Erstellen von Statistiken
|
|
|
* **course:** Enthält die CRUD-Operationen für die Kurs Ressourcen und die Operationen zur Interaktion wie z.B. Beitreten und Verlassen von Kursen
|
|
|
* **user:** Enthält eine Route zum Abrufen von Informationen über den momentanen User und mit dem User verknüpften Ressourcen
|
|
|
* **charts:** Enthält Routen zum Abrufen von Charts und WordClouds
|
|
|
|
|
|
## Authentifizierung
|
|
|
|
|
|
Die Authentifizierung erfolgt mit zwei unterschiedlichen JWT-Token. Dem User und dem Session Token. Mehr über diese kann im Abschnitt [JWT](/Entwickler/JWT) erfahren werden.
|
|
|
|
|
|
## Schemas
|
|
|
|
|
|
Schemas sind wiederholt verwendetet Beschreibungen für Ressourcen in der API.
|
|
|
|
|
|
Damit sie nicht wiederholt in die API-Dokumentation geschrieben werden müssen, werden sie getrennt definiert und mit `$ref` eingebunden. Im Backend wird der [DBMapper](/Entwickler/Übersicht#dbmapper) verwendet, um die Erzeugung von konformen JSON aus der Datenbank Antwort zu vereinheitlichen.
|
|
|
|
|
|
Eines der am meisten in der API verwendeten Schemas ist das User-Schema. Es wird immer dann verwendet, wenn ein User repräsentiert werden muss. z.B. bei Abrufen von Informationen über den/die momentane Benutzer*innen oder beim Abrufen von Informationen über eine Sitzung zum Repräsentieren des Sitzungs-Erstellers.
|
|
|
|
|
|
```yaml
|
|
|
User:
|
|
|
type: object
|
|
|
properties:
|
|
|
id:
|
|
|
type: integer
|
|
|
format: int32
|
|
|
example: 0
|
|
|
fbsID:
|
|
|
type: integer
|
|
|
format: int32
|
|
|
example: 0
|
|
|
username:
|
|
|
type: string
|
|
|
example: "user"
|
|
|
firstname:
|
|
|
type: string
|
|
|
example: "Example"
|
|
|
lastname:
|
|
|
type: string
|
|
|
example: "User"
|
|
|
docent:
|
|
|
type: boolean
|
|
|
example: false
|
|
|
``` |