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
Feldname | Datentyp | Bemerkung |
---|---|---|
id | Zahl | Primärschlüssel |
sterne | Zahl | 0-5 in 1-er-Schritten |
kommentar | Text | – |
mealId | Zahl | Fremdschlüssel |
benutzerId | Zahl | Fremdschlüssel |
Feldname | Datentyp | Bemerkung |
---|---|---|
id | Zahl | Primärschlüssel |
name | Text | Name der Gruppe/App |
token | Text | fü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" }
]
}
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" }
]
}
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!"
}
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…