Skip to content
BitDojo
Wie das Web funktioniert
GrundlagenFree13 min read

Die Sprache, in der Anfragen gestellt werden

Du kannst eine HTTP-Anfrage in ihre vier Bestandteile zerlegen, die wichtigsten Statuscodes einordnen und sagen, welche Methode wofür gedacht ist.

Client und Server reden miteinander. Sie brauchen dafür eine gemeinsame Sprache, sonst wüsste keiner, was der andere meint. Diese Sprache heißt HTTP.

Man spricht sie Buchstabe für Buchstabe: H, T, T, P. Sie ist erstaunlich einfach, im Kern nur Text, und genau deshalb hat sie sich durchgesetzt.

Die vier Teile einer Anfrage

Eine Anfrage sieht ausgeschrieben ungefähr so aus:

GET /kurse/frontend HTTP/1.1
Host: bitdojo.de
Accept-Language: de

Der erste Teil ist die Methode, hier GET. Sie sagt, was getan werden soll. Der zweite ist die Adresse, hier /kurse/frontend. Sie sagt, worum es geht. Danach folgen die Zusatzangaben, jede auf einer eigenen Zeile. Bei manchen Methoden kommt ein Inhalt dazu, zum Beispiel die Daten eines ausgefüllten Formulars.

Die Methoden

Es gibt viele, im Alltag brauchst du fünf.

Methode Bedeutung Ändert etwas?
GET Gib mir etwas nein
POST Nimm das entgegen und leg es an ja
PUT Ersetze das Vorhandene vollständig ja
PATCH Ändere einen Teil davon ja
DELETE Lösche das ja

Die Spalte rechts ist die wichtigste. GET darf nichts verändern, und das ist keine Empfehlung, sondern eine Zusage an alle Beteiligten. Browser laden GET-Adressen im Voraus, Zwischenspeicher merken sie sich, Suchmaschinen rufen sie auf. Wer hinter einem GET etwas löscht, erlebt, dass eine Suchmaschine seine Datenbank leert.

Das Wort klingt sperrig und ist im Gespräch trotzdem üblich. Es lohnt sich, es einmal richtig zu lernen: Es fällt in fast jedem Gespräch über Schnittstellen.

Die Statuscodes

Jede Antwort beginnt mit einer dreistelligen Zahl. Die erste Ziffer sagt schon fast alles.

Beginnt mit Bedeutung Beispiel
2 hat geklappt 200 in Ordnung, 201 angelegt
3 woanders 301 dauerhaft umgezogen, 304 unverändert
4 Fehler beim Anfragenden 401 nicht angemeldet, 403 keine Rechte, 404 nicht da
5 Fehler beim Server 500 Absturz, 503 überlastet

Zwei davon werden ständig verwechselt, und der Unterschied kommt in Bewerbungsgesprächen vor. 401 heißt: Ich weiß nicht, wer du bist, melde dich an. 403 heißt: Ich weiß, wer du bist, und du darfst das trotzdem nicht.

Ebenfalls oft verwechselt: 500 und 503. 500 heißt, im Code ist etwas kaputtgegangen. 503 heißt, der Server ist da, kann aber gerade nicht, meist weil er überlastet ist oder gerade neu startet.

Zustandslos, und was daraus folgt

HTTP merkt sich nichts. Jede Anfrage steht für sich, und der Server weiß beim zweiten Aufruf nicht mehr, dass es dieselbe Person war.

Das klingt unpraktisch, ist aber der Grund, warum das Netz so gut skaliert: Jede Anfrage kann von jedem beliebigen Server beantwortet werden, weil keiner etwas wissen muss, was ein anderer weiß.

Die Folge im Alltag: Damit eine Anmeldung über mehrere Seiten hält, muss der Nachweis bei jeder Anfrage mitgeschickt werden. Genau dafür gibt es Cookies, und darum geht es in der Spur über Anmeldung ausführlicher.

Exerciseabout 35 minutes

Anfragen von Hand stellen

Du schickst Anfragen ohne Browser, direkt von der Kommandozeile. Das Werkzeug dafür heißt curl und ist auf macOS und Windows bereits vorhanden.

  1. Öffne ein Terminal.
  2. Rufe eine Seite ab und sieh dir nur die Antwortkopfzeilen an: curl -I https://example.com Notiere den Statuscode.
  3. Rufe dieselbe Seite mit vollem Inhalt ab: curl https://example.com
  4. Rufe eine Adresse ab, die es nicht gibt, zum Beispiel curl -I https://example.com/gibtesnicht. Welcher Code kommt?
  5. Sieh dir eine Umleitung an: curl -I https://bitdojo.de und achte auf einen Code, der mit 3 beginnt, sowie auf die Kopfzeile Location.

Wenn dir die Ausgabe zu unübersichtlich ist, hilft curl -v. Das zeigt Anfrage und Antwort vollständig, Zeile für Zeile.

Done when

  • Du hast mindestens drei verschiedene Statuscodes selbst erzeugt.
  • Du kannst zu jedem sagen, ob das Problem beim Anfragenden oder beim Server lag.
  • Du hast in einer Antwort mindestens zwei Kopfzeilen gefunden und benannt.

Has it stuck?

7 cards from this lesson, 6 questions in the exam pool.