Glossar · API-Testing
HTTP-Statuscode
Englisch: HTTP status code
Auch genannt: HTTP-Statuscodes, Statuscode, Statuscodes, Response Code
Definition
Die dreistellige Zahl in jeder HTTP-Response, die angibt, ob der Request erfolgreich war, umgeleitet wurde oder an Client oder Server gescheitert ist.
Ein HTTP-Statuscode ist die kurze Antwort des Servers auf einen Request. Die erste Ziffer gibt die Klasse an: 1xx informativ, 2xx Erfolg, 3xx Umleitung, 4xx Client-Fehler (der Request war falsch) und 5xx Server-Fehler (der Request war womöglich in Ordnung, aber der Server hat versagt). Den exakten Statuscode zu prüfen, ist in jedem API-Test meist die erste Assertion.
Die Codes, die Tester am häufigsten brauchen
| Code | Bedeutung | Typischer Einsatz |
|---|---|---|
200 OK |
Erfolg mit Body | GET oder ein Update, das die Ressource zurückgibt |
201 Created |
Eine Ressource wurde angelegt | POST, mit Location-Header |
204 No Content |
Erfolg, kein Body | DELETE, manche PUTs |
301 / 302 / 304 |
Verschoben, anderswo gefunden, nicht geändert | Redirects und Caching |
400 Bad Request |
Fehlerhafter oder ungültiger Request | Kaputtes JSON, falsche Typen |
401 Unauthorized |
Nicht authentifiziert | Fehlendes, abgelaufenes oder ungültiges Token |
403 Forbidden |
Authentifiziert, aber nicht berechtigt | Gültiger Nutzer, falsche Rolle |
404 Not Found |
Ressource existiert nicht | Unbekannte ID oder Verbergen einer verbotenen Ressource |
409 Conflict |
Kollidiert mit dem aktuellen Zustand | Doppelte E-Mail, Versionskonflikt |
422 Unprocessable Content |
Formal korrekt, aber Validierung schlägt fehl | Verstöße gegen Geschäftsregeln |
429 Too Many Requests |
Rate Limit überschritten | Oft mit Retry-After |
500 / 502 / 503 / 504 |
Serverfehler, Bad Gateway, nicht verfügbar, Gateway-Timeout | Bugs und Infrastruktur |
401 vs. 403
Trotz seines Namens geht es bei 401 Unauthorized um Authentifizierung: Der Server weiß nicht, wer Sie sind. Abhilfe schafft ein Login oder ein gültiges Token, und die Response sollte einen WWW-Authenticate-Header enthalten. Bei 403 Forbidden geht es um Autorisierung: Der Server weiß, wer Sie sind, und Sie dürfen das nicht. Ein erneuter Login hilft nicht. Eine Testsuite sollte beides abdecken: kein Token, ein abgelaufenes Token und ein gültiges Token für einen Nutzer ohne die passende Berechtigung.
Häufige Fehler
- Nur auf 200 prüfen. Die meisten Fehler stecken in den Fehlerpfaden. Ungültige Eingaben sollten ein
4xxliefern; ein500bedeutet unbehandelte Eingaben und ist einen Bugreport wert. - Fehler mit Status 200. Eine Fehlermeldung in einem
200-Body bricht Clients und Monitoring. - Uneinheitliche Konventionen. Manche APIs verwenden
400für alle ungültigen Eingaben, andere reservieren422für Validierungsfehler. Beides ist in Ordnung; beides innerhalb einer API zu mischen, ist der Bug.