Join Slido: Enter #code to vote and ask questions
Welches Netzwerkprotokoll kennen Sie neben dem HTTP-Protokoll noch?
FTP
Wer von Ihnen hat eine eigene Webseite und wie ist sie technisch umgesetzt?
Website-Builder, Wordpress, Website selbst programmieren,…
Beispiel: Website selbst programmieren und bei einem ausgewählten Anbieter hosten
bplaced - SSD/NVMe Webspace & Webhosting
Blog Tool, Publishing Platform, and CMS - WordPress.org
Videokurs “Onepager nachbauen” (HTML, CSS, JS)
**Beispiel Hotelbuchung:**
Tabellen
Gast(Gast-Nr, Name, Adresse, Email, Geburtsdatum)
Zimmer(Name, Kategorie, Preis pro Nacht)
Buchung(Buchung-Nr, Gast, Name des Gastes, Zimmer, Preis pro Nacht, Anzahl Personen, Reisezeitraum, Frühstück, Anzahl Nächte, Gesamtpreis)
Umsetzung mit Notion
Anwendungsfall:
Die Daten eines fiktiven, nach dem Client-Server-Prinzip organisierten Hotelbuchungssystems liegen auf einem Server in einer Datenbank. Wir stellen uns vor, dass sich die Daten in einer ähnlichen Tabellenstruktur befinden wie in der oben gezeigten “Umsetzung mit Notion”.
Eine mobile App (Client) möchte auf diese Daten zugreifen, um dem Nutzer eine Übersicht mit allen Buchungen zu zeigen. Die App sendet daher einen HTTP-GET-Request an den Server.
Als Antwort auf den Request sendet der Server alle Datensätze aus der Tabelle “Buchung” im JSON-Format zurück.
Frage: Wie sieht der Response-Body im JSON-Format aus?
Vereinfachungen:
Variante 1:
Body:
[
{"Buchung-Nr": "B1",
"Gast": "G2",
"Name des Gastes": "Peter Walkowiak",
"Zimmer": "Z1",
"Preis pro Nacht": 160,
"Anzahl Personen": 1,
"Reisezeitraum":
{
start: "02.05.2023",
end: "08.05.2023"
},
"Frühstück": true,
"Anzahl Nächte": 6,
"Gesamtpreis": 960
},
{"Buchung-Nr": "B2",
"Gast": "G1",
"Name des Gastes": "Steffi Höse",
"Zimmer": "Z2",
"Preis pro Nacht": 250,
"Anzahl Personen": 2,
"Reisezeitraum":
{
start: "02.07.2023",
end: "10.07.2023"
},
"Frühstück": false,
"Anzahl Nächte": 8,
"Gesamtpreis": 4000
},
{"Buchung-Nr": "B3",
"Gast": "G3",
"Name des Gastes": "Linda Fuhrmann",
"Zimmer": "Z1",
"Preis pro Nacht": 160,
"Anzahl Personen": 1,
"Reisezeitraum":
{
start: "16.05.2023",
end: "20.05.2023"
},
"Frühstück": true,
"Anzahl Nächte": 4,
"Gesamtpreis": 640
},
]
Variante 2 mit verschachtelten Zimmer-Objekten:
Body:
[
{
"Buchung-Nr": "B1",
"Gast": "G2",
"Name des Gastes": "Peter Walkowiak",
"Zimmer": {
"Name": "Z1",
"Kategorie": "Standard",
"Preis pro Nacht": 160
},
"Preis pro Nacht": 160,
"Anzahl Personen": 1,
"Reisezeitraum": {
"start": "02.05.2023",
"end": "08.05.2023"
},
"Frühstück": true,
"Anzahl Nächte": 6,
"Gesamtpreis": 960
},
{
"Buchung-Nr": "B2",
"Gast": "G1",
"Name des Gastes": "Steffi Höse",
"Zimmer": {
"Name": "Z2",
"Kategorie": "Komfort",
"Preis pro Nacht": 250
},
"Preis pro Nacht": 250,
"Anzahl Personen": 2,
"Reisezeitraum": {
"start": "02.07.2023",
"end": "10.07.2023"
},
"Frühstück": false,
"Anzahl Nächte": 8,
"Gesamtpreis": 4000
},
{
"Buchung-Nr": "B3",
"Gast": "G3",
"Name des Gastes": "Linda Fuhrmann",
"Zimmer": {
"Name": "Z1",
"Kategorie": "Standard",
"Preis pro Nacht": 160
},
"Preis pro Nacht": 160,
"Anzahl Personen": 1,
"Reisezeitraum": {
"start": "16.05.2023",
"end": "20.05.2023"
},
"Frühstück": true,
"Anzahl Nächte": 4,
"Gesamtpreis": 640
}
]
Frage: Was fehlt in diesem Beispiel, damit der Client eine GET-Anfrage an den Server senden kann?
Antwort: Es wird eine URL benötigt, also die Server-Adresse für Anfragen. Außerdem benötigt der Client auch die Kenntnis über mögliche Parameter, die in den Anfragen mitgesendet werden können.
Beispiel:
URL: https://serveradresse.de/Buchungen
Methode: HTTP GET
Parameter: von, bis
Beispiel GET-Anfrage: https://serveradresse.de/Buchungen?von=01.05.2023&bis=03.08.2023
Merke: Nur bei Anfragen an URLs mit der HTTP-Methode “GET” können Anfrageparameter in der oben gezeigten Weise mit der URL verkettet werden. Dadurch sind “GET”-Anfragen besonders einfach zu handhaben. Sie können z.B. in vielen Fällen direkt in der Adresszeile eines Browsers eingegeben werden. Bei POST-Anfragen müssen Parameter und andere Daten, die an den Server übertragen werden sollen, im Request-Body eingefügt werden. Solche Anfragen können mit speziellen Tools, wie z.B. Postman, getestet werden.
Frage: Welche Vorgehensweise wäre bei Variante 1 denkbar, um auf die vollständigen Daten eines Zimmers zuzugreifen, welches in einer bestimmten Buchung vorkommt?
Antwort: Es könnte eine spezielle URL bereitgestellt werden, um die Daten eines einzelnen Zimmers mit einem bestimmten Namen per GET-Request abzufragen.
Beispiel:
URL: https://serveradresse.de/Zimmer
Methode: HTTP GET
Parameter: name
Beispiel GET-Anfrage: https://serveradresse.de/Zimmer?name=Z2
Die beiden Beispiel-URLs https://serveradresse.de/Buchungen und https://serveradresse.de/Zimmer bilden gemeinsam mit ggf. weiteren bereitgestellten URLs die HTTP-API des Webservers, auf dem die Daten des Hotelbuchungssystems liegen.
Eine HTTP-API (Application Programming Interface) lässt sich als Sammlung von URLs betrachten, die den Zugriff auf Daten per HTTP-Request (z.B. HTTP GET) ermöglichen. Die Daten werden in einem bestimmten Datenformat, wie z.B. JSON, übertragen.
Merke: Jede HTTP-API besitzt in der Regel eine API-Dokumentation, in der genau angegeben wird
Zusatz:
JSON Schema für die oben gezeigte Datenstruktur generieren (lassen)