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

HTTP-Anfrage und Antwort lesen

Nach dieser Lektion: Ich kann eine HTTP-Anfrage und ihre Antwort lesen.

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

Was schickt eine App, wenn sie Daten bestellt?

Eine HTTP-Anfrage (HTTP steht für Hypertext Transfer Protocol) ist die Nachricht, mit der ein Browser oder eine App bei einem Server Daten bestellt. Wer Anfrage und Antwort lesen kann, versteht, was jede Web-App im Hintergrund tut und wo ein Fehler steckt.

Die Katalog-App einer Hochschulbibliothek fragt so nach den Büchern eines Fachs. Der Server schickt eine Antwort zurück, und die App zeigt sie an.

Am Ende dieser Lektion

Notiz

Ich kann eine HTTP-Anfrage und ihre Antwort lesen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
HTTP-Anfragedie Nachricht, mit der ein Programm etwas von einem Server verlangt
URLdie Webadresse einer Ressourcehttp://api:3000/buecher
Methodedas Verb einer Anfrage: was der Server tun sollGET
Headereine Zusatzangabe zu einer Nachricht, als Name und WertAccept: application/json
Statuscodeeine dreistellige Zahl, die sagt, wie die Anfrage ausging200
Bodyder Inhalt einer Nachricht, nach den Headern

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

Im Lab sprechen Sie mit einer echten API

Das Lab startet zwei Dienste: eine Datenbank namens db und eine Web-API namens api. Die API macht aus jeder Tabelle eine Webadresse.

Im Terminal haben Sie psql für die Datenbank und curl für Webanfragen. Legen Sie zuerst mit psql die Tabelle buecher an. Starten Sie die Runs der Reihe nach.

psql das Passwort geben

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 buecher anlegen und füllen

Befehl
psql -h db -U shop -c "drop table if exists buecher cascade; create table buecher (id serial primary key, titel text not null, fach text not null, jahr int not null, exemplare int not null default 1); insert into buecher (titel, fach, jahr, exemplare) values ('Algorithmen kompakt', 'Informatik', 2019, 3), ('Netze verstehen', 'Informatik', 2021, 2), ('Statistik fuer alle', 'Mathematik', 2018, 1), ('Schreiben im Studium', 'Sprache', 2020, 4); 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 hat vier Teile

Die erste Zeile nennt die Methode, den Pfad und die Version von HTTP. Der Pfad ist der Teil der Adresse nach dem Rechnernamen.

Danach folgen die Header, je eine Zeile aus Name, Doppelpunkt und Wert. Eine leere Zeile beendet die Header. Alles danach ist der Body. Bei einer reinen Leseanfrage ist er leer.

Ein Beispiel: eine Anfrage, Zeile für Zeile

Code: bash
GET /buecher?id=eq.1 HTTP/1.1
Host: api:3000
Accept: application/json

# Zeile 1: Methode GET, Pfad /buecher?id=eq.1, Version HTTP/1.1
# Zeile 2 und 3: zwei Header
# Dann eine leere Zeile, und danach kein Body

Dieselbe Anfrage mit curl schicken

Befehl
curl -s -w "\n" "http://api:3000/buecher?id=eq.1"

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 Antwort hat Statuszeile, Header und Body

Die Antwort beginnt mit dem Statuscode, zum Beispiel 200. Er sagt in einer Zahl, wie die Anfrage ausging. Danach folgen wieder Header und der Body.

Der Header Content-Type nennt das Format des Bodys. Bei dieser API ist es JSON. Der Body ist der eigentliche Inhalt: hier die Zeilen der Tabelle.

Ein Beispiel: eine Antwort lesen

Teil der AntwortIm BeispielBedeutung
StatuszeileHTTP/1.1 200 OKDie Anfrage hat geklappt
HeaderContent-Type: application/jsonDer Body ist JSON-Text
Leere Zeile(nichts)Hier endet der Header-Teil
Body[{"id":1,"titel":"Algorithmen kompakt", ...}]Eine Liste mit einem Buch

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

Nur den Statuscode anzeigen

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

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

Nur das Format des Bodys anzeigen

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

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 glauben, ein Code 200 heiße: Die gesuchte Zeile ist da. Er sagt nur, dass die Anfrage geklappt hat. Eine Suche ohne Treffer antwortet auch mit 200, und der Body ist eine leere Liste. Lesen Sie darum immer auch den Body.

Ein Buch suchen, das es nicht gibt

Befehl
curl -s -w "\n%{http_code}\n" "http://api:3000/buecher?id=eq.999"

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

Ü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.