Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Wie funktioniert das Web? HTTP einfach erklärt

Nach dieser Lektion: Ich kann einer Seite von der Anfrage bis zur Antwort folgen.

Lektion, 45 Min.7 BefehlePostgreSQL-und-PostgREST-Lab: eine Datenbank und eine REST-API im Browser

Was passiert, wenn du eine Seite öffnest?

HTTP ist die Sprache, in der dein Browser mit einem Server spricht. Die Abkürzung steht für Hypertext Transfer Protocol.

Wer HTTP versteht, kann Fehler wie „404“ selbst deuten und später eine eigene Web-App bauen. Heute siehst du eine Anfrage und ihre Antwort aus der Nähe.

Am Ende dieser Lektion

Notiz

Ich kann einer Seite von der Anfrage bis zur Antwort folgen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Serverein Computer, der Seiten und Daten ausliefert
Anfragedie Bitte des Browsers an den Server
Antwortdas, was der Server zurückschickt
Statuscodeeine Zahl, die sagt, wie die Anfrage ausging404
URLdie Adresse einer Seite oder von Datenhttp://api:3000/produkte

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Wie läuft eine Anfrage ab?

Dein Browser ist der Client. Er schickt eine Anfrage an einen Server, zum Beispiel „gib mir die Preisliste“.

Der Server schickt eine Antwort zurück. Sie enthält die Daten und eine Zahl, den Statuscode. Danach ist die Sache zu Ende. Für die nächste Seite beginnt eine neue Anfrage.

Woraus bestehen Anfrage und Antwort?

TeilAnfrageAntwort
Erste ZeileMethode und Pfad: GET /produkteStatuszeile: HTTP/1.1 200 OK
KopfzeilenZusatzangaben, etwa die SpracheZusatzangaben, etwa die Art der Daten
InhaltOft leer bei GETDie Seite oder die Daten

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Bevor du anfängst

Notiz

Drück oben in der Leiste auf Lab starten und warte, bis die Maschine läuft. Im Lab gibt es zwei Computer mit Namen: db ist die Datenbank, api ist eine Web-Schnittstelle davor. Die Runs legen eine kleine Tabelle produkte für einen Kiosk an.

Das Passwort der Datenbank merken lassen

Befehl
export PGPASSWORD=shop

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Tabelle produkte anlegen

Befehl
psql -h db -U shop -c "create table if not exists produkte (id serial primary key, name text not null unique, preis_in_cent integer not null)"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Drei Produkte einfügen

Befehl
psql -h db -U shop -c "insert into produkte (name, preis_in_cent) values ('Brezel', 120), ('Apfelsaft', 200), ('Mineralwasser', 150) on conflict do nothing"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Schnittstelle neu laden lassen

Befehl
psql -h db -U shop -c "notify pgrst, 'reload schema'"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Eine Anfrage schicken und nur den Statuscode lesen

Befehl
curl -s -o /dev/null -w "%{http_code}\n" http://api:3000/produkte

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Was sagen die Statuscodes?

Der erste Buchstabe der Zahl nennt die Gruppe. 2 heißt: Es hat geklappt. 3 heißt: Schau woanders. 4 heißt: Die Anfrage war falsch. 5 heißt: Der Server hat einen Fehler gemacht.

Die Anfrage eben ging an /produkte, und der Code 200 sagt: Hier sind die Daten.

Beispiel: häufige Statuscodes

CodeNameBedeutung
200OKHier sind die Daten
201CreatedIch habe etwas Neues angelegt
301Moved PermanentlyDie Seite wohnt jetzt woanders
400Bad RequestDeine Anfrage ergibt keinen Sinn
404Not FoundDazu gibt es nichts
500Internal Server ErrorAuf dem Server ging etwas schief

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Eine Adresse fragen, die es nicht gibt

Befehl
curl -s -o /dev/null -w "%{http_code}\n" http://api:3000/gibtsnicht

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Statuscode und Art der Daten zusammen lesen

Befehl
curl -s -o /dev/null -w "%{http_code} %{content_type}\n" http://api:3000/produkte

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele denken, ein 404 heiße, der Server sei kaputt. Das stimmt nicht. Der Server lief und hat dir geantwortet, dass es dazu nichts gibt. Ein Fehler im Server hat eine Nummer mit 5 am Anfang.

Wie liest ein Programm die Statuszeile?

Die erste Zeile jeder Antwort hat drei Teile mit Leerzeichen dazwischen: die Version, die Zahl und den Namen. Zum Beispiel HTTP/1.1 404 Not Found.

Ein Programm teilt die Zeile am Leerzeichen. Weil der Name selbst Leerzeichen enthalten kann, teilt es nur zweimal.

Eine Statuszeile in Teile zerlegen

Code: python
zeile = "HTTP/1.1 404 Not Found"
# Teile nur an den ersten zwei Leerzeichen.
teile = zeile.split(" ", 2)
print(teile)
print(int(teile[1]) + 1)
# Ändere die Zeile zu "HTTP/1.1 200 OK" und drück noch einmal auf Ausführen.

Weiterführend: eine Frage, die keinen Sinn ergibt

Schick im Terminal curl -s -o /dev/null -w "%{http_code}\n" "http://api:3000/produkte?preis_in_cent=eq.abc". Du fragst nach Produkten, deren Preis „abc“ ist.

Lies den Code und schlag ihn in der Tabelle nach. Zu welcher Gruppe gehört er, und wer hat den Fehler gemacht?

Über dieses Lab und seinen Quellcode: PostgreSQL-und-PostgREST-Lab: eine Datenbank und eine REST-API im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.