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
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Server | ein Computer, der Seiten und Daten ausliefert | |
| Anfrage | die Bitte des Browsers an den Server | |
| Antwort | das, was der Server zurückschickt | |
| Statuscode | eine Zahl, die sagt, wie die Anfrage ausging | 404 |
| URL | die Adresse einer Seite oder von Daten | http://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?
| Teil | Anfrage | Antwort |
|---|---|---|
| Erste Zeile | Methode und Pfad: GET /produkte | Statuszeile: HTTP/1.1 200 OK |
| Kopfzeilen | Zusatzangaben, etwa die Sprache | Zusatzangaben, etwa die Art der Daten |
| Inhalt | Oft leer bei GET | Die 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
export PGPASSWORD=shopHier 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
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
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
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
curl -s -o /dev/null -w "%{http_code}\n" http://api:3000/produkteHier 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
| Code | Name | Bedeutung |
|---|---|---|
| 200 | OK | Hier sind die Daten |
| 201 | Created | Ich habe etwas Neues angelegt |
| 301 | Moved Permanently | Die Seite wohnt jetzt woanders |
| 400 | Bad Request | Deine Anfrage ergibt keinen Sinn |
| 404 | Not Found | Dazu gibt es nichts |
| 500 | Internal Server Error | Auf dem Server ging etwas schief |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Eine Adresse fragen, die es nicht gibt
curl -s -o /dev/null -w "%{http_code}\n" http://api:3000/gibtsnichtHier 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
curl -s -o /dev/null -w "%{http_code} %{content_type}\n" http://api:3000/produkteHier 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
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?