Hier wird unsere ergänzende Datenbank und deren Schnittstelle dokumentiert.

Ziel

Unsere Datenbank soll die Einträge der TheMealDB ergänzen, so dass wir in unserer WebApp Rezepte bewerten und kommentieren und die vorhandenen Bewertungen und Kommentare anzeigen können.

ER-Diagramm

Aufgabe

Erstelle ein ER-Diagramm der Datenbank inkl. den verknüpften Tabellen von TheMealDB

Tabellenschema

Aufgabe

Generiere daraus ein Tabellenschema

bewertung
FeldnameDatentypBemerkung
idZahlPrimärschlüssel
sterneZahl0-5 in 1-er-Schritten
kommentarText
mealIdZahlFremdschlüssel
benutzerIdZahlFremdschlüssel

 

benutzer
FeldnameDatentypBemerkung
idZahlPrimärschlüssel
nameTextName der Gruppe/App
tokenTextfür Authentifizierung

REST-API

Aufgabe

Lege die REST-Endpoints und ihr JSON-Format fest.

Bewertungen zu einem Rezept abrufen:

Wir können zu einem bestimmten Rezept die Bewertungen abrufen. Dazu hängen wir die id des Rezeptes (idMeal) als Query-Parameter an den Endpoint an:

https://informatik.mygymer.ch/fts/themealdb/?id=52814 (GET)

Wir erhalten eine Liste von Bewertungen mit Anzahl Sterne, Kommentar und Name des Autors:

{
  "bewertungen": [
    { "sterne": 3, "kommentar": "es ist wirklich fein!", "name": "fts" },
    { "sterne": 2, "kommentar": "nicht so meins!", "name": "lem" }
  ]
}
1
2
3
4
5
6

Top-5 der Rezepte abrufen

Damit wir die fünf bestbewerteten Rezepte erhalten, lassen wir die id weg:

https://informatik.mygymer.ch/fts/themealdb/ (GET)

Wir erhalten eine Liste mit Rezepten mit mealId sowie dem Durchschnitt und die Anzahl Bewertungen.

{
  "bewertungen": [
    { "mealId": "52820", "sterne": "4.0000", "anzahl": "1" },
    { "mealId": "52814", "sterne": "2.5000", "anzahl": "2" }
  ]
}
1
2
3
4
5
6

Bewertung abgeben

Um selbst eine Bewertung abzugeben, müssen wir einen POST-Request an die folgende URL schicken.

https://informatik.mygymer.ch/fts/themealdb/ (POST)

Die Daten werden im Body des Requests als JSON übermittelt und haben das folgende Format:

{
  "token": "asdf",
  "mealId": 52814,
  "sterne": 2,
  "kommentar": "nicht so meins!"
}
1
2
3
4
5
6

Dabei authentifizieren wir uns mit dem Token. Ebenso nicht fehlen darf die mealId, die sagt zu welchem Rezept die Bewertung sein soll. Optional dazu kommt eine Anzahl Sterne (0-5) und ein Kommentar.

Jeder Benutzer kann pro Rezept nur eine Bewertung abgeben. Ein erneute Bewertung überschreibt ein vorhandene.

👉 Fetch-GET
👉 Fetch-POST


Hinweis: die Theorie findest du im…

👉 Skript Datenbanken