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

Statuscodes wählen und Fehler melden

Nach dieser Lektion: Ich kann den passenden Statuscode wählen und einen Fehler klar melden.

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

Was sagt ein HTTP-Statuscode?

Ein HTTP-Statuscode ist eine dreistellige Zahl, mit der ein Server meldet, wie eine Anfrage ausgegangen ist: erledigt, falsch gestellt oder selbst gescheitert. Wer den richtigen Code wählt und den Fehler im Body erklärt, spart anderen Entwickelnden Stunden der Suche.

Stellen Sie sich eine Bibliotheks-App vor, die nur "Fehler" anzeigt. Niemand weiß, ob das Buch fehlt, das Passwort falsch ist oder der Server brennt.

Am Ende dieser Lektion

Notiz

Ich kann den passenden Statuscode wählen und einen Fehler klar melden.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Statuscodeeine Zahl, die das Ergebnis einer Anfrage nennt404
2xxCodes für Erfolg201
4xxCodes für einen Fehler der Anfrage400
5xxCodes für einen Fehler des Servers500
Fehler-Bodyder Text in der Antwort, der den Fehler erklärt

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

Die erste Ziffer nennt, wer scheiterte

2xx heißt: Es hat geklappt. 4xx heißt: Die Anfrage war falsch, der Fehler liegt beim Absender. 5xx heißt: Der Server ist gescheitert, der Fehler liegt bei ihm.

Diese Ziffer entscheidet, was ein Programm tut. Bei 4xx hat Wiederholen keinen Sinn, bevor die Anfrage geändert ist. Bei 5xx kann es später klappen.

Ein Beispiel: die häufigen Codes

CodeNameWann
200OKGelesen oder geändert, die Antwort hat Inhalt
201CreatedEine neue Ressource wurde angelegt
204No ContentErledigt, nichts zurückzuschicken
400Bad RequestDie Eingabe ist falsch oder unvollständig
401UnauthorizedWir wissen nicht, wer Sie sind
403ForbiddenWir wissen es, aber Sie dürfen das nicht
404Not FoundDie Ressource oder Adresse gibt es nicht
409ConflictDie Anfrage kollidiert mit dem Stand, zum Beispiel eine doppelte Nummer
429Too Many RequestsZu viele Anfragen in kurzer Zeit
500Internal Server ErrorDer Server ist an einem eigenen Fehler gescheitert

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

Im Lab sehen Sie die Codes echt

Starten Sie die Runs der Reihe nach. Jeder holt oder sendet etwas und zeigt den Statuscode. Bei den Fehlern steht vor dem Code ein JSON-Objekt, das die Datenbank oder die API schreibt. Seine Meldung ist englisch.

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.

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.

Eine Tabelle fragen, die es nicht gibt

Befehl
curl -s -w "\n%{http_code}\n" "http://api:3000/zeitschriften"

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 Buch ohne Titel senden

Befehl
curl -s -w "\n%{http_code}\n" -X POST -H "Content-Type: application/json" -d '{"fach":"Test","jahr":2024}' "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.

Eine Nummer doppelt vergeben

Befehl
curl -s -w "\n%{http_code}\n" -X POST -H "Content-Type: application/json" -d '{"id":1,"titel":"Noch einmal","fach":"Test","jahr":2024}' "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 verwechseln 401 und 403. Bei 401 weiß der Server nicht, wer anfragt, die Person muss sich anmelden. Bei 403 kennt er sie, aber sie darf das nicht. Eine neue Anmeldung hilft bei 403 nicht.

Ein guter Fehler-Body sagt, was zu ändern ist

Der Code allein reicht nicht. Der Body erklärt den Fehler. Er braucht einen festen Namen für Programme, einen Satz für Menschen und, wenn es passt, das betroffene Feld.

Er zeigt nie Interna: keine SQL-Texte, keine Dateipfade, keine Stapelspur. Wer sie sieht, lernt, wie der Dienst gebaut ist.

Ein Beispiel: schlechter und guter Fehler-Body

SchlechtGutWarum
Fehler{"fehler": "ungueltige_eingabe", "feld": "jahr", "meldung": "Das Jahr muss eine ganze Zahl sein."}Name, Feld und Satz
ERROR: null value in column "titel" of relation "buecher"{"fehler": "pflichtfeld", "feld": "titel", "meldung": "Der Titel fehlt."}Keine Interna
Es ist etwas schiefgelaufen.{"fehler": "nicht_gefunden", "meldung": "Das Buch 999 gibt es nicht."}Sagt, was fehlt

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

Einen Fehler-Body bauen

Code: python
import json

def fehler_body(name, feld, meldung):
    return json.dumps({"fehler": name, "feld": feld, "meldung": meldung})

print(fehler_body("ungueltige_eingabe", "jahr", "Das Jahr muss eine ganze Zahl sein."))
# Ändern Sie das Feld und die Meldung für ein fehlendes Fach.

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