Skip to content

API Documentation

jeanz6 edited this page Mar 29, 2022 · 3 revisions

API - made with FastAPI

Login

Für den Benutzer Login wird ein Passwort und ein Benutzername benötigt. Sobald diese eingegeben werden wir ein JSON Web Token generiert, der nun unser 'Acces Token' ist. Er ist für den Login 30 Minuten gültig. Der Login wird mit dem API-Call /token durchgeführt. Bei jedem Request bei dem es benötigt wird, wird der JWT-Token im Header mitgegeben.

Security Schema: OAuth2

Für das Ausprobieren der API-Calls steht eine grafische Oberfläche im Browser zur Verfügung.

Diese kann unter http://127.0.0.1:8000/docs oder http://127.0.0.1:8000/redoc eingesehen werden, wenn die Container gestartet sind. Oben rechts ist ein 'Authorize'-Button in dem man sich mit dem Testbenutzer: username: testUser , password: 123 Die Oberfläche dient der beispielhaften Erläuterung der Funktionen der API und stellt eine Erweiterung zu diesem Dokument dar.

/token Call POST

Bei einem erfolgreichen Response wird folgendes zurückgegeben:

{ "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJqdyIsImV4cCI6MTY0ODQ5MzQzOX0.ZjZzCVeO00YrW_SIitCL0WFm2L9CRwjKMy20tJBNgO0", "token_type": "bearer" }

/users Calls

Für die /user-Calls muss man nicht bei allen Calls authentifiziert sein.

/users/me

GET Gibt den aktuellen Benutzernamen und seine E-Mail-Adresse zurück. Für diesen Call muss man authentifiziert sein.

Response Body:

{
  "userName": "string",
  "email": "string"
}

/users/create

POST Kreiert einen Benutzer in der Datenbank.

Request Body:

{
  "userName": "string",
  "email": "string",
  "password": "string"
}

/users/get_balance

POST Gibt den aktuellen Wert der Coins im Wallet des angemeldeten Users zurück.

/history Calls

Die History Calls werden dazu genutzt die Fahrtenhistorie des Nutzers anzuzeigen.

/history/me

GET Mit diesem Call erhält man die aktuellen Fahrtenhistorie des angemeldeten Benutzers.

Response Body:

[
  {
    "dateTime": "2022-01-28T19:12:42",
    "userID": 3,
    "receivedCoins": 0,
    "distanceTraveled": 0,
    "historyID": 5
  }
]

/history/create

POST Dieser API-Call fügt eine neue Fahrt in die Fahrtenhistorie ein.

Request Body:

{
  "dateTime": "2022-01-28T19:12:42.774Z",
  "distanceTraveled": 0,
  "receivedCoins": 0
}

/history/delete

POST Löscht eine Fahrt anhand der history_id aus der Fahrtenliste heraus. Eingabeparameter: history_id : integer Response Body: Gibt die Anzahl der gelöschten Fahrtenhistorien zurück.

/coordinates Calls

Für alle /coordinates Calls muss man authentifiziert sein.

/coordinates/create

POST Kreiert einen Eintrag in der Koordinaten Tabelle der Datenbank.

Request Body:

{
  "tourID": 0,
  "tourNumber": 0,
  "longitude": 0,
  "latitude": 0,
  "datetime": "2022-03-28T19:37:59.181Z"
}

/coordinates/delete

POST Löscht einen Eintrag in der Koordinaten Tabelle. Hierfür muss die tour_id mitgegeben werden.

tour_id : integer

Response Body: Gibt die Anzahl der gelöschten Einträge zurück.

/coordinates/calculateDistance

POST Beim Aufrufen dieses Calls werden alle Koordinaten Einträge mit derselben tour_id zu einer Gesamtstrecke berechnet. Diese Gesamtstrecke wird dann in der Fahrtenhistorie Tabelle abgespeichert.

Eingabeparameter: tour_id : integer