SkillGridInformatik durch Machen lernen

HTTP: Requests, Responses, Statuscodes

Lies einen echten Request und eine echte Response, verstehe, was Statuscodes wirklich versprechen, und warum HTTP so tut, als kenne es dich nicht.

15 Min. · 44 XP

HTTP ist ein Textgespräch auf einer bereits aufgebauten TCP-Verbindung. Der Client schickt eine Anfrage, der Server antwortet mit genau einer Antwort. Eine Anfrage besteht aus Request-Zeile, Headern, einer Leerzeile und einem optionalen Body. Eine Antwort aus Statuszeile, Headern, einer Leerzeile und einem optionalen Body.

TCP-Drei-Wege-Handshake
ClientCLOSED
ServerCLOSED

Verbindung geschlossen. Es besteht noch keine Verbindung.

Gesendete Pakete
0
Wiederholungen
0
Status
Noch nicht hergestellt
GET /articles/42 HTTP/1.1
Host: api.example.org
Accept: application/json
Authorization: Bearer eyJhbGciOi...


HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: max-age=60

{"id": 42, "title": "..."}

Statusfamilien sagen, wer handeln muss. 2xx — hat funktioniert. 3xx — die Ressource ist umgezogen, der Location-Header sagt wohin. 4xx — die Anfrage ist schuld: 400 fehlerhaft, 401 nicht authentifiziert, 403 verboten, 404 nicht vorhanden, 429 zu viele Anfragen. 5xx — der Server ist schuld. 502 oder 503 lohnt ein erneuter Versuch, 400 nie.

Praxis

  1. Baue einen korrekten HTTP-Request, der eine neue Bestellung mit JSON-Body {"item":"book"} anlegt.

    Hinweise
    • Die Request-Zeile beantwortet drei Fragen: welche Aktion, welche Ressource, welche Protokollversion.
    • In HTTP/1.1 sagt ein Request ohne Host-Header dem Server nicht, welche Seite du willst.

    15 XP

  2. POST /orders liefert 503. Was sollte der Client tun?

    Hinweise
    • Schau auf die Methode, nicht nur auf den Code: Der Code sagt, was der Server getan hat, nicht wer schuld ist.
    • Automatisch wiederholen solltest du nur, wenn die Wiederholung sicher ist.

    13 XP

  3. Schreibe eine Funktion loadUser(id), die /users/{id} als JSON lädt, den Status prüft und bei 404 einen Fehler wirft.

    Hinweise
    • Schick den Accept-Header im selben Optionsobjekt, das du an fetch übergibst.
    • Gib das geparste Objekt zurück, nicht die Response — und wirf den Fehler vor dem Parsen, wenn die Anfrage fehlgeschlagen ist.

    16 XP