Zum Hauptinhalt springen

Statuscodes, Error Handling und Rate Limiting

1. HTTP-Statuscodes

Statuscodes sind entscheidend, um den Zustand einer Anfrage eindeutig an den Client zu kommunizieren. Hier eine Übersicht der wichtigsten Statuscodes und ihre Verwendung:

  • 2xx Erfolge

    • 201 Created: Eine Ressource wurde erfolgreich erstellt. Wird oft als Antwort auf POST-Anfragen verwendet.
    • 204 No Content: Die Anfrage war erfolgreich, aber es gibt keine Antwortdaten (z.B. bei erfolgreichen DELETE-Operationen).
  • 3xx Umleitungen

    • 301 Moved Permanently: Die Ressource wurde dauerhaft verschoben.
    • 304 Not Modified: Zeigt an, dass die Ressource sich seit der letzten Anfrage nicht geändert hat (nützlich für Caching).
  • 4xx Client-Fehler

    • 400 Bad Request: Die Anfrage war fehlerhaft (z.B. fehlende oder ungültige Parameter).
    • 401 Unauthorized: Authentifizierung ist erforderlich, aber der Benutzer ist nicht eingeloggt oder das Token ist ungültig.
    • 403 Forbidden: Der Benutzer hat keine Berechtigung, um auf diese Ressource zuzugreifen.
    • 404 Not Found: Die angeforderte Ressource existiert nicht.
    • 409 Conflict: Es liegt ein Konflikt vor, z.B. wenn eine Ressource nicht erstellt werden kann, weil bereits eine existiert.
  • 5xx Server-Fehler

    • 500 Internal Server Error: Ein allgemeiner Fehler, der auf ein Problem auf dem Server hinweist.
    • 503 Service Unavailable: Der Server ist derzeit nicht verfügbar, oft wegen Wartung oder Überlastung.

Diese Statuscodes geben dem Client klare Informationen und helfen bei der Fehlerdiagnose und dem Handling von Anfragen.

2. Error Handling und Fehlerantworten

Gute APIs geben detaillierte und verständliche Fehlermeldungen zurück, wenn etwas schiefgeht. Hier sind einige Best Practices:

  • Konsistentes Fehlerformat: Verwende ein konsistentes Format (z.B. JSON) für Fehlerantworten.
  • Detailreiche Fehlermeldungen: Gebe eine Fehlermeldung und einen Fehlercode zurück, z.B.:
    {
    "error": {
    "code": 400,
    "message": "Invalid request parameters",
    "details": {
    "parameter": "email",
    "issue": "Invalid email format"
    }
    }
    }
  • Vermeidung von sensiblen Daten in Fehlermeldungen: Gib keine internen Serverinformationen weiter, da dies ein Sicherheitsrisiko darstellt.

3. Rate Limiting und Schutz vor Missbrauch

  • Rate Limiting: Beschränke die Anzahl der Anfragen pro Zeiteinheit, um den Missbrauch der API zu verhindern (z.B. max. 100 Anfragen pro Minute).
  • Throttling: Warne den Nutzer, bevor er die Grenze erreicht, um ihn vor Sperrung zu schützen.
  • Antwort mit Statuscode 429: Bei Überschreiten der Grenze kann ein 429 Too Many Requests-Statuscode gesendet werden.